Aşağıdaki nesneleri hiyerarşide A > B > C > D
var. Her nesne bir tabloya eşlenir. Ben QueryOver kullanarak aşağıdaki SQL yazmaya çalışıyorum:Karmaşık nHibernate QueryOver ifadesi
SELECT B
FROM A, B, C, D
WHERE A.ID = B.ID
AND B.ID = C.ID
AND C.ID = D.ID
WHERE A.NUMBER = 'VALUE'
AND D.NAME IN ('VALUE1', 'VALUE2')
şimdiye kadar C# kodu vardır:
string[] entityNames = entityAttributes.Select(e => e.Name).ToArray();
string customerNumber = 2;
return session.QueryOver<B>()
.JoinQueryOver(b => b.C)
.JoinQueryOver(c => c.D)
.WhereRestrictionOn(d => d.Name).IsIn(entityNames)
.List<B>();
Burada eksik A > B
bağlantıdır. Birleştirme, NUMBER
alanında kısıtlamak üzere A
numaralı bağlantıya nasıl ekleneceğini anlayamıyorum. Aşağıdakileri denedim ama .JoinQueryOver(b => b.C)
, B
türünü bulmak yerine A
türünü arıyor. Hala tip B
dönerken
return session.QueryOver<B>()
.JoinQueryOver(b => b.A)
.Where(a => a.Number == customerNumber)
.JoinQueryOver(b => b.C) **//Looks for type A instead of B**
.JoinQueryOver(c => c.D)
.WhereRestrictionOn(d => d.Name).IsIn(entityNames)
.List<B>();
nasıl bu sorgu türünü A
katabilir?
Teşekkür ederiz! Bu benim uygulamamın çoklu senaryolarında bir çekicilik gibi çalıştı! –