JoinQueryOver और JoinAlias ​​में क्या अंतर है?


88

मुझे यह जानने की जरूरत है कि JoinQueryOver और JoinAlias ​​में क्या अंतर है, और प्रत्येक का उपयोग कब करना है?

जवाबों:


108

कार्यात्मक रूप से वे एक ही काम करते हैं, दूसरी इकाई में शामिल होते हैं। फर्क सिर्फ इतना है कि वे क्या वापसी करते हैं। JoinQueryOver वर्तमान इकाई के साथ एक नया QueryOver देता है, जिसमें इकाई शामिल हो गई है, जबकि JoinAlias ​​में मूल QueryOver की मूल इकाई के रूप में वर्तमान इकाई है।

जो भी आप उपयोग करते हैं वह व्यक्तिगत स्वाद का मामला है: ( http://nhibernate.info/doc/nh/en/index.html#queryqueryover से )

IQueryOver<Cat,Kitten> catQuery =
    session.QueryOver<Cat>()
        .JoinQueryOver<Kitten>(c => c.Kittens)
            .Where(k => k.Name == "Tiddles");

तथा

Cat catAlias = null;
Kitten kittenAlias = null;
IQueryOver<Cat,Cat> catQuery =
    session.QueryOver<Cat>(() => catAlias)
        .JoinAlias(() => catAlias.Kittens, () => kittenAlias)
        .Where(() => kittenAlias.Name == "Tiddles");

कार्यात्मक रूप से समान हैं। ध्यान दें कि दूसरी क्वेरी में बिल्ली का बच्चा कैसे स्पष्ट रूप से संदर्भित है।


7
ध्यान दें कि दूसरे उदाहरण में आपको उपनाम Kitten kittenAlias = null;और Cat catAlias = null;पहले घोषित करना होगा । मुझे यह गन्दा लगता है, इसलिए मैं JoinAliasतब तक उपयोग नहीं करता जब तक यह आवश्यक न हो।
फोका

इसे स्पष्ट करने के लिए @foka को धन्यवाद। मैं यह याद किया और सोच रहा था कि यह काम क्यों नहीं किया।
मारियो टाकीज

12

QueryOver Series - Part 2: एंड्रयू व्हिटकर द्वारा मूल बातें और जुड़ाव बहुत अच्छी व्याख्या देता है:

सारांश:

  • IQueryOverदो प्रकार के मापदंडों के साथ एक सामान्य प्रकार है TRootऔरTSubType
  • .SelectTRootअन्य QueryOver विधियों पर काम करते हुए चल रही है TSubType
  • TRootTSubTypeजब आप क्वेरी का निर्माण कर रहे होते हैं तो वही रहता है, लेकिन जब आप उपयोग करते हैं तो बदल जाते हैंJoinQueryOver
  • JoinQueryOverऔर JoinAliasअपनी क्वेरी में शामिल हों। JoinAliasनहीं बदलता है TSubType, लेकिन JoinQueryOverकरता है।
  • आप गुण है कि से संबंधित नहीं करने का उल्लेख करने के लिए जब एक प्रश्न के निर्माण उपनाम का उपयोग कर सकते TRootयाTSubType
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.