默认情况下所有NHibernate References都是LazyLoaded吗?

时间:2010-09-27 13:41:37

标签: .net nhibernate fluent-nhibernate mapping lazy-loading

我有一个(虚构的)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-reference是Lazyloaded,但References-reference似乎不是延迟加载的。这是预期的吗?我需要明确吗?

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

1 个答案:

答案 0 :(得分:2)

默认情况下,引用(多对一)是延迟加载的。我敢打赌,您之前在同一会话中加载了Responsible对象,并且它是从第一级缓存而不是数据库中检索的。