NHibernate создает прокси через session.Load (), но не через Linq или Criteria API
У меня странная проблема в моем текущем проекте. Ленивая загрузка для запросов не работает. Когда я запрашиваю список, nhibernate извлекает все ассоциации отдельно.
Я извлек маленькие части этого и поместил это в отдельный раствор. В основном то, что яу нас есть, это Account-Table и AccountSync-Table. Оба имеют идентификатор и URL, в то время как идентификатор - просто db-guid.
Мои занятия:
public class HippoAccount
{
public virtual Guid Id { get; set; }
public virtual string Url { get; set; }
public virtual HippoAccountSync Sync { get; set; }
}
public class HippoAccountSync
{
public virtual Guid Id { get; set; }
public virtual string Url { get; set; }
public virtual HippoAccount Account { get; set; }
}
Когда я сейчас загружаю объект через негоs гид:
var account = session.Load(accountId);
Console.WriteLine(NHibernateUtil.IsPropertyInitialized(account, "Sync"))
... возвращаетсяfalse
и сама учетная запись является прокси.
Но при загрузке списка через API критериев:
var account = (HippoAccount)session
.CreateCriteria(typeof (HippoAccount))
.Add(Restrictions.Eq("Id", accountId))
.List()[0];
... недвижимостьSync
инициализируется (запускает второй запрос select), и возвращаемый объект не является прокси.
Это поведение по умолчанию? Что я делаю не так?
Отображение: