2013-04-04 74 views
1

我有通過AutoMapping設置的多對多關係。現在,保存和更新按預期正常工作,但DiscountGay並未在DiscountDay中加載,之後再獲取實體。我無法理解爲什麼_discountGroups列表總是空的,儘管它在數據庫中都是正確的。NHibernate HasManyToMany自動映射不在加載列表

我已經看到了有關使用ISet的,而不是IList的但它似乎並沒有使我的情況下,任何的區別,neiter不使用 .Not.LazyLoad() 在映射建議。除去AsBag()和AsSet()也沒有區別。

實體

public class DiscountDay 
{ 
    public virtual DayOfWeek DayOfWeek { get; set; } 

    public virtual Discount Discount { get; set; } 

    private readonly IList<DiscountGroup> _discountGroups = new List<DiscountGroup>(); 

    public virtual IEnumerable<DiscountGroup> DiscountGroups 
    { 
     get { return _discountGroups; } 
     set { } 
    } 
} 

public class DiscountGroup 
{ 
    public virtual string Name { get; set; } 

    private readonly IList<DiscountDay> _discountDay = new List<DiscountDay>(); 

    public virtual IEnumerable<DiscountDay> DiscountDay 
    { 
     get { return _discountDay; } 
    } 
} 

的映射

public class DiscountDayOverride : IAutoMappingOverride<DiscountDay> 
{ 
    public void Override(AutoMapping<DiscountDay> mapping) 
    { 
     mapping.HasManyToMany(x => x.DiscountGroups) 
      .AsSet() 
      .Cascade 
      .SaveUpdate(); 
     mapping.Cache.ReadWrite(); 
    } 
} 

public class DiscountGroupOverride : IAutoMappingOverride<DiscountGroup> 
{ 
    public void Override(AutoMapping<DiscountGroup> mapping) 
    { 
     mapping.HasManyToMany(x => x.DiscountDay) 
      .AsBag() 
      .Inverse(); 
     mapping.Cache.ReadWrite(); 
    } 
} 

回答

1

嗯,我是一個徹頭徹尾的numpty。 DiscountDay實體上DiscountGroups上的空集導致此問題。出於某種原因,我掩蓋了它,只是沒有想到一個空集會做任何事情。

更新代碼:

public virtual IEnumerable<DiscountGroup> DiscountGroups 
{ 
    get { return _discountGroups; } 
}