Обновлен:
Самый простой способ - ввести коллекцию 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()
Обновление: кажется, вы ищете сопоставления. С 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