سؤال

أنا جديد في NHibernate (أول مشروع كبير لي معه).
كنت أستخدم طريقة بسيطة للوصول إلى البيانات عن طريق إنشاء كائن ISession داخل كتلة استخدام للقيام بالاستيلاء على كائني أو قائمة الكائنات، وبهذه الطريقة تم تدمير الجلسة بعد الخروج من كتلة التعليمات البرمجية.

ومع ذلك، لا يعمل هذا في الحالة التي تتطلب التحميل البطيء.
على سبيل المثال، إذا كان لدي كائن عميل يحتوي على خاصية عبارة عن مجموعة من الطلبات، فعند محاولة التحميل البطيء، أحصل على استثناء السبات.
أي شخص يستخدم طريقة مختلفة؟

نصائح أخرى

تفحص ال SummerOfNHibernate البث الشبكي لبرنامج تعليمي عظيم ...ما تبحث عنه على وجه التحديد لن يأتي حتى الحلقة 5 أو 6.

أبقِ جلستك مفتوحة لوحدة العمل بأكملها.إذا كانت مدة الجلسة الخاصة بك صغيرة جدًا، فلن تتمكن من الاستفادة من ذاكرة التخزين المؤقت على مستوى الجلسة (وهو أمر مهم).في أي وقت يمكنك فيه منع رحلة ذهابًا وإيابًا إلى قاعدة البيانات سيوفر الكثير من الوقت.لا يمكنك أيضًا الاستفادة من التحميل البطيء، وهو أمر بالغ الأهمية لفهمه.

إذا كان عمر الجلسة كبيرًا جدًا، فقد تواجه مشكلات أخرى.

إذا كان هذا تطبيق ويب، فمن المحتمل أن يكون أداءك جيدًا مع نمط الجلسة لكل httpRequest.هذا في الأساس هو HttpModule الذي يفتح الجلسة في بداية الطلب ويمسح/يغلق في النهاية.تأكد من تخزين الجلسة في HttpContext.Items NOT A STATIC VARIABLE.<--- يؤدي إلى جميع أنواع المشاكل التي لا ترغب في التعامل معها.

قد تنظر أيضا إلى وحيد القرن لوحدة تنفيذ العمل.

نظرًا لأنك تعمل على تطوير تطبيق ويب (باستخدام ASP.NET على الأرجح)، قم بالتحقق من ذلك أفضل ممارسات NHibernate مع ASP.NET في CodeProject.

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