2012-02-07 4 views
0

Я изучаю, как использовать nHibernate с Vb.net, используя все примеры онлайн (которые находятся на C#), чтобы узнать. Что было хорошо для основ, но теперь я пытаюсь научиться использовать QueryOver's JoinAlias, и переходить с C# на VB.net сложно. Я использовал this page's answer в качестве ссылки, но мне все еще не удается преобразовать такой пример в Vb.net. Может кто-нибудь мне помочь?Как использовать QueryOver с nHibernate в VB.NET

+0

Какую версию VB.NET вы используете? До .NET 4 у VB не было той же лямбда-поддержки, что и C#. Если вы используете более старую версию, это может объяснить некоторые из ваших проблем. –

+0

Я использую .NET 3.5. –

ответ

0

Обновлено:

легкий путь будет ввести сбор TableResultDetailsClass в TableResultClass и использовать.

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() 

Update: вам кажется ищут сопоставления. С 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

Хорошо. В этом случае у меня есть таблица и классы DetailsTable. В таблице есть DID, но в DetailsTable есть столбец с родителем, поэтому Table. Поэтому я пытаюсь присоединиться, когда DetailsTable = Table. Как мне это сделать? И я надеюсь, что это поможет прояснить мой вопрос. –