1

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();
    }
}
4

1 に答える 1

1

ええと、私は完全で完全なしこりです。この問題は、DiscountDay エンティティの DiscountGroups の空のセットが原因でした。どういうわけか、私はそれをざっと見ていて、空のセットが何もしないとは思っていませんでした。

更新されたコード:

public virtual IEnumerable<DiscountGroup> DiscountGroups
{
    get { return _discountGroups; }
}
于 2013-04-04T11:49:52.457 に答える