Все ли ссылки NHibernate по умолчанию являются LazyLoaded? - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть (вымышленный) класс с Fluent-mapping:

public class Customer 
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual Employee Responsible { get; set; }
    public virtual IList<Order> Orders { get; set; }
}

public class CustomerMapping : ClassMap<Customer    
{
    public CustomerMapping()
    {
        Id(c => c.Id);
        Map(c => c.Name);
        References(c => c.Responsible);
        HasMany(c => c.Orders); 
    }
}

Теперь - если я выбираю клиента из базы данных, ссылка HasMany будет Lazyloaded, но ссылка References кажется не ленивойзагружен.Это ожидается?Нужно ли это явно?

var fromDb = Session.Get<Customer>(id); 
Assert.That(!NHibernateUtil.IsInitialized(fromDb.Orders));
Assert.That(!NHibernateUtil.IsInitialized(fromDb.Reponsible)); // <-- fails

1 Ответ

2 голосов
/ 27 сентября 2010

Ссылки (многие-к-одному) загружаются лениво по умолчанию.Держу пари, что вы ранее загрузили ответственный объект в том же сеансе, и он был извлечен из кэша первого уровня, а не из базы данных.

...