Frage

Gibt es eine Möglichkeit einen Integrationstest zu schreiben, um zu testen, dass die FetchMode.Eager richtig funktioniert? Ich möchte sicherstellen, dass es nicht in die Datenbank gehen, wenn ich MySubObject abgerufen werden.

Der Code:

public MyObject GetEager(string name)
{
    return Session
        .CreateCriteria(typeof(MyObject))
        .SetFetchMode("MySubObject", FetchMode.Eager)
        .Add(Restrictions.Eq("Name", name))
        .UniqueResult<MyObject>();
}
War es hilfreich?

Lösung

Sie können auch NHibernateUtil.IsInitialized verwenden ... wie in diesem Beitrag erklärt

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

Andere Tipps

Wie wäre es so etwas wie dieses;

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

Durch die Sitzung zu schließen und dann das dazugehörige Objekt versucht, zuzugreifen, wenn das Objekt nicht mit Spannung ist geladen wird es eine Ausnahme werfen. Conversly wenn es eagrly geladen NHibernate wird nicht auf die Datenbank zuzugreifen versuchen, und so wird nicht die Ausnahme aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top