2012-05-30 58 views
0

有沒有辦法使用取私人收藏?nHibernate - 取私人收藏

這是我下面的代碼:

public class Owner 
{ 
    private ICollection<Cat> _cats = new List<Cat>(); 

    public virtual int Id { get; set; } 

    public virtual IEnumerable<Cat> Cats { get { return _cats; } } 

    public virtual void AddCat(Cat cat) { ... } 
} 

public class Cat 
{ 
    public virtual int Id { get; set; } 

    public virtual string Name { get; set; } 

    public virtual Owner Owner { get; set; } 
} 

大部分的時間,我想偷懶負荷貓收集,但有時我不知道。我想在Linq查詢中使用Fetch來加載它。我目前得到「無法解決財產:貓...」異常。我假設我得到這個,因爲我在我的ClassMapping中有一個Set(「_ cats」,...),並且它尋找要映射的屬性Cat。有沒有辦法讓Fetch與私人收藏貓一起工作?

回答

0

當數據從數據庫加載時,NHibernate會從對象中生成代理,因此您想映射的屬性必須是虛擬的。你應該讓你的私人貓咪保護虛擬並再試一次。我只用一個受保護的setter和一個公共getter來映射屬性,但這個解決方案也可能適用於完全受保護的屬性。