سؤال

هل هناك أي طريقة لكتابة اختبار التكامل لاختبار أن FetchMode.Eager يعمل بشكل صحيح؟ أريد أن تحقق من أنه لن قاعدة البيانات عندما استرداد MySubObject.

كود:

public MyObject GetEager(string name)
{
    return Session
        .CreateCriteria(typeof(MyObject))
        .SetFetchMode("MySubObject", FetchMode.Eager)
        .Add(Restrictions.Eq("Name", name))
        .UniqueResult<MyObject>();
}
هل كانت مفيدة؟

المحلول

ويمكنك أيضا استخدام NHibernateUtil.IsInitialized ... كما هو موضح في هذا المنصب

http://nhibernate.info/doc/howto /various/lazy-loading-eager-loading.html

نصائح أخرى

وماذا عن شيء من هذا القبيل؛

MyObject testObject = new MyObject();
testObject.GetEager("a name");
testObject.Session.Close();
Assert.AreEqual(testObject.MySubObject.Id, 3425);

ومع انتهاء الدورة ومن ثم محاولة الوصول إلى الكائن المرتبط إذا كان الكائن لم يتم تحميل بفارغ الصبر سيكون بطرح استثناء. Conversly إذا تم تحميله eagrly سوف NHibernate لا محاولة الوصول إلى قاعدة البيانات وهكذا لن رمي استثناء.

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