JoinQueryOver ve JoinAlias arasındaki farkın ne olduğunu ve ne zaman kullanılmalı?JoinQueryOver ve JoinAlias arasındaki fark nedir?
Teşekkürler.
JoinQueryOver ve JoinAlias arasındaki farkın ne olduğunu ve ne zaman kullanılmalı?JoinQueryOver ve JoinAlias arasındaki fark nedir?
Teşekkürler.
İşlevsel olarak aynı şeyi yaparlar, başka bir varlığa katılmalarını sağlarlar. Tek fark, geri döndükleri şeydir. JoinQueryOver, varlığın varlık olarak eklenen varlık ile birlikte yeni bir QueryOver döndürür, JoinAlias ise özgün varlık olarak özgün varlık olan özgün QueryOver döndürür. (http://nhibernate.info/doc/nh/en/index.html#queryqueryover itibaren)
IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
.JoinQueryOver<Kitten>(c => c.Kittens)
.Where(k => k.Name == "Tiddles");
ve
Cat catAlias = null;
Kitten kittenAlias = null;
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
.JoinAlias(() => catAlias.Kittens,() => kittenAlias)
.Where(() => kittenAlias.Name == "Tiddles");
işlevsel aynı mıdır: Kullanmak Hangisini
kişisel zevk meselesidir. KittenAlias'ın ikinci sorguda nasıl açıkça başvurulduğunu not edin.
QueryOver Series - Part 2: Basics and Joining by Andrew Whitaker çok iyi bir açıklama verir:
Özet:
IQueryOver
diğer QueryOver yöntemleri ameliyat ederkenTRoot
çalışır iki tür parametreleriTRoot
veTSubType
.Select
ile genel bir türüdürTSubType
. Bir sorgu bina konum olarakTRoot
aynı kalır, ancakJoinQueryOver
JoinQueryOver
veJoinAlias
eklenti sorgunuzla katılır kullanarak katıldığınızdaTSubType
değiştirir.JoinAlias
,TSubType
değiştirmez, ancakJoinQueryOver
yapar. İkinci örnekte takma ad `= null Kitten kittenAlias bildirmek sahipTRoot
veyaTSubType
Not ait olmayan özelliklerine başvurmak için bir sorgu oluştururken
Bunu açıklamak için @foka teşekkür ederiz. Bunu özledim ve neden işe yaramadığını merak ettim. –