我有一个(虚构的)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
答案 0 :(得分:2)
默认情况下,引用(多对一)是延迟加载的。我敢打赌,您之前在同一会话中加载了Responsible对象,并且它是从第一级缓存而不是数据库中检索的。