Как использовать QueryOver с nHibernate в VB.NET - PullRequest
0 голосов
/ 07 февраля 2012

Я изучал, как использовать nHibernate с Vb.net, используя все примеры онлайн (которые находятся на C #), чтобы изучить. Это было хорошо для основ, но теперь я пытаюсь научиться использовать JoinAlias ​​в QueryOver, и переход с C # на VB.net затруднен. Я использовал ответ этой страницы в качестве ссылки, но мне все еще не удается преобразовать подобный пример в Vb.net. Может ли кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 07 февраля 2012

Обновлен:

Самый простой способ - ввести коллекцию 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
...