Я изучаю, как использовать nHibernate с Vb.net, используя все примеры онлайн (которые находятся на C#), чтобы узнать. Что было хорошо для основ, но теперь я пытаюсь научиться использовать QueryOver's JoinAlias, и переходить с C# на VB.net сложно. Я использовал this page's answer в качестве ссылки, но мне все еще не удается преобразовать такой пример в Vb.net. Может кто-нибудь мне помочь?Как использовать QueryOver с nHibernate в VB.NET
ответ
Обновлено:
легкий путь будет ввести сбор 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
Это довольно общий, неопределенный ответ, который у вас есть ... может быть, я не уточнил достаточно? Я пытаюсь объединить 2 разных стола. –
Извините, был быстрый выстрел. Может быть, лучше всего показать запрос, который вы хотите преобразовать или описать, что вы хотите от определенной схемы. – Firo
Хорошо. В этом случае у меня есть таблица и классы DetailsTable. В таблице есть DID, но в DetailsTable есть столбец с родителем, поэтому Table. Поэтому я пытаюсь присоединиться, когда DetailsTable = Table. Как мне это сделать? И я надеюсь, что это поможет прояснить мой вопрос. –
Какую версию VB.NET вы используете? До .NET 4 у VB не было той же лямбда-поддержки, что и C#. Если вы используете более старую версию, это может объяснить некоторые из ваших проблем. –
Я использую .NET 3.5. –