আমার জানা দরকার যে জয়েন্টকুয়েরওভার এবং জয়েন্টএলিয়াসের মধ্যে পার্থক্য কী এবং কখন ব্যবহার করতে হবে?
উত্তর:
কার্যত তারা একই কাজ করে, অন্য সত্তায় একটি সংযুক্তি তৈরি করে। পার্থক্য কেবলমাত্র তারা ফিরে আসে। জয়েনকুইয়ারওভার একটি নতুন কোয়েরিওভারকে রিটার্ন দেয় যার সাথে বর্তমান সত্তা সত্তা যোগ দেয়, এবং জয়েনআলিয়াস মূল কোয়েরিওভারকে রিটার্ন দেয় যার মূল সত্তা হিসাবে বর্তমান সত্তা রয়েছে।
আপনি যে কোনওটি ব্যবহার করুন ব্যক্তিগত স্বাদের বিষয়: ( 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");
কার্যত একই। বিড়ালছানা আলিয়াস দ্বিতীয় কোয়েরিতে কীভাবে স্পষ্টভাবে উল্লেখ করা হয়েছে তা নোট করুন।
ক্যোয়ারওভার সিরিজ - পর্ব 2: অ্যান্ড্রু হুইটেকারের দ্বারা বুনিয়াদি এবং যোগদান একটি খুব ভাল ব্যাখ্যা দেয়:
সারসংক্ষেপ:
IQueryOver
দুই ধরণের পরামিতি সহ একটি জেনেরিক টাইপTRoot
এবংTSubType
.Select
TRoot
অন্যান্য কোয়েরিওভার পদ্ধতিতে কাজ করার সময় এটি পরিচালনা করেTSubType
।TRoot
আপনি যেমন কোনও ক্যোয়ারী তৈরি করছেন ঠিক তেমনই থাকে, তবেTSubType
আপনি যখন ব্যবহারে যোগদান করেন তখন পরিবর্তন হয়JoinQueryOver
JoinQueryOver
এবংJoinAlias
আপনার প্রশ্নের সাথে যোগ দেয়।JoinAlias
পরিবর্তন হয় নাTSubType
, কিন্তুJoinQueryOver
হয়।- আপনি বৈশিষ্ট্য যে অন্তর্গত না উল্লেখ করতে যখন একটি ক্যোয়ারী বিল্ডিং alias লেখা ব্যবহার করতে পারেন
TRoot
বাTSubType
Kitten kittenAlias = null;
এবংCat catAlias = null;
তার আগে ঘোষণা করতে হবে । আমি এটিকে অগোছালো মনে করি, সুতরাংJoinAlias
এটি প্রয়োজনীয় না হলে আমি ব্যবহার করি না ।