我通过AutoMapping设置了多对多关系。现在,保存和更新按预期正常工作,但是当我之后获得实体时,DiscountGroups中没有加载DiscountGroups。我不能为我的生活解决为什么_discountGroups列表总是空的,即使它在数据库中都是正确的。
我看过有关使用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();
}
}
答案 0 :(得分:1)
嗯,我是一个完整而彻底的笨蛋。 DiscountDay实体上的DiscountGroups上的空集导致了该问题。出于某些原因,我对它进行了掩饰,并没有认为空集会做任何事情。
更新的代码:
public virtual IEnumerable<DiscountGroup> DiscountGroups
{
get { return _discountGroups; }
}