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), и возвращаемый объект не является прокси.

Это поведение по умолчанию? Что я делаю не так?

Отображение:


  
    
  
  

  
    
  




  
    
  

  
    
  

  

    
  


Ответы на вопрос(1)

Ваш ответ на вопрос