2010-09-27 119 views
0

我有流利的映射一個(虛構的)類:所有的NHibernate引用默認情況下是LazyLoaded?

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,但引用引用似乎並沒有被延遲加載。這是預期的嗎?我需要明確嗎?

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

回答

2

默認情況下,引用(多對一)是延遲加載的。我敢打賭,你以前在同一個會話中加載了Responsible對象,並且它是從一級緩存而不是數據庫中檢索的。

+0

Thx。是的 - 這就是我的想法..我不加載負責任何比我加載在會議其他地方的訂單,但我會嘗試將測試隔離到一個單獨的會議.. – stiank81 2010-09-27 14:23:04

相關問題