AutoMapping を使用して多対多の関係を設定しました。これで、保存と更新は期待どおりに正常に機能しますが、後でエンティティを取得すると、DiscountGroups が DiscountDay に読み込まれません。データベースではすべて正しいのに、_discountGroups リストが常に空である理由を、一生理解できません。
IList ではなく ISet を使用することについての提案を見てきましたが、私の場合は何の違いもないようです。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();
}
}