2013-04-04 73 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; } 
}