سؤال

أقوم بتطوير تطبيق ويب باستخدام NHibernate.هل يمكن أن تخبرني عن كيفية كتابة استعلام NHibernate لاستعلام SQL التالي:

SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position

إنها في الأساس انضمام تلقائي ولكني لا أعرف كيفية كتابة هذا في Nhibernate.لنفترض أن أسماء الخصائص هي نفس أسماء أعمدة الجدول.

هل كانت مفيدة؟

المحلول

يمكنك فقط إجراء التحديد على الكيان الأصلي وإجراء الارتباط بين الكائنين "lazy = false".طالما تم تعيين الكيانات، فسيتم إرجاع كليهما ولن تحصل على استثناء التحميل البطيء عند محاولة الوصول إلى الكائن.

إذا كنت لا ترغب في تعيين "lazy=false" فيمكنك أيضًا تكرار النتائج وإجراء نوع من العمليات (مثل السؤال عما إذا كانت فارغة؛if(v1.AssocatedObject == null){}) لضمان تحميل البيانات أثناء فتح الجلسة.

تحديث:

أعتقد أن هناك بالفعل أفضل من ذلك في NHibernateUtil.Initialise() الذي يمكنه تهيئة مجموعة دون الحاجة إلى التجول فيها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top