2012-02-07 9 views
0

私はオンラインで(C#にある)すべての例を使ってVb.netでnHibernateを使用する方法を学びました。これは基本的にうまくいきましたが、今はQueryOverのJoinAliasの使い方を学び、C#からVB.netへの移行は難しいです。私は参考としてthis page's answerを使用してきましたが、私はまだVb.netにそのような例を変換するのに問題があります。誰か助けてくれますか?VB.NETでnHibernateでQueryOverを使用する方法

+0

使用しているVB.NETのバージョンは? .NET 4以前では、VBはC#と同じラムダサポートを持っていませんでした。古いバージョンを使用している場合は、いくつかの問題が説明されている可能性があります。 –

+0

私は現在.NET 3.5を使用しています。 –

答えて

0

更新日:

簡単な方法はTableResultClassにTableResultDetailsClassのコレクションを紹介し、それを使用することです。

results = session.QueryOver(Of TableResultClass)() _ 
    .Where(Function(tr) tr.Id = wantedId) _ 
    .Select(Function(tr) New With { tr.Id, tr.Details.Sum(Function(trd) trd.Property) }) _ 
    .List() 

そうでない場合は、オブジェクト[]バック

results = session.QueryOver(Of TableResultDetailsClass)() _ 
    .Where(Function(td) tD.Parent.Id = wantedId) _ 
    .Select(Projections.Property(Function(td) tD.Parent.Id), Projections.Sum(Function(td) tD.Prpoerty)) _ 
    .List() 

オリジナル得る:それはあなたのようだ:

をあなたが必要とするすべてはvb.netでのジェネリック医薬品とラムダ

Dim child as Child 
results = session.QueryOver(Of User)() 
    .Where(Function(u) u.Name = "blub") 
    .JoinAlias(Function(u) u.Childs, Function child) 
    .List() 

更新ですマッピングを探しています。 FluentNHibernateでそれはのようになります

Public Class TableEntityMap Inherits ClassMap(Of TableEntity) 

    Sub New() 
     Id(Function(x) x.Id, "DID") 

     HasMany(Of TableEntity)(Function(x) x.Details).Inverse() 
    End Sub 
End Class 

Public Class TableEntityMap Inherits ClassMap(Of TableEntity) 

    Sub New() 
     Id(Function(x) x.Id) 

     References(Of DetailsTableEntity)(Function(x) x.Parent, "Parent") 

    End Sub 
End Class 

Dim entity as TableEntity = sess.Get(Of TableEntity)(someid) 

'' get all details of this entity 
Dim details = entity.Details 
+0

それはあなたがそこに持っているかなり一般的な、あいまいな答えです...多分私は十分に指定していませんでしたか? 私は2つのテーブルを集約しようとしています。 –

+0

申し訳ありませんがファーストショットでした。おそらく、変換したいクエリーオーバーを表示したり、定義済みのスキーマから戻したいものを記述することが最善です – Firo

+0

大丈夫です。この場合、私はTableクラスとDetailsTableクラスを持っています。表にはDIDがありますが、DetailsTableにはParentという列があります。ですから、DetailsTable = Tableのときに参加しようとしています。どうすればいい?私の質問を明確にするのに役立つことを願っています。 –

関連する問題