0

私は2つのクラスを持っています

 public class ProInfo
{
    public ProInfo()
    {
        ProPrices = new List<ProPrice>();
    }
    public virtual Guid ProID { get; set; }
    public virtual string ProCate { get; set; }
    public virtual string Name { get; set; }
    public virtual string Unit { get; set; }
    public virtual string PicName { get; set; }
    public virtual string Memo { get; set; }
    public virtual bool DeleteFlag { get; set; }
    public virtual DateTime LastUpDateTime { get; set; }
    public virtual IList<ProPrice> ProPrices { get; set; }

}

 public class ProPrice
{
    public virtual int Id { get; set; }
    public virtual AreaInfo AreaInfo { get; set; }
    public virtual ProInfo ProInfo { get; set; }
    public virtual Decimal Price { get; set; }


}

マッピング コードは次のとおりです。

    public ProInfoMap()
    {
        Id(x => x.ProID);
        Map(x => x.DeleteFlag);
        Map(x => x.Name);
        Map(x => x.PicName);
        Map(x => x.ProCate);
        Map(x => x.Unit);
        Map(x => x.LastUpDateTime);
        HasMany<ProPrice>(x => x.ProPrices);


    }

 public ProPriceMap()
   {
       Id(x => x.Id);
       Map(x => x.Price);
       References<ProInfo> (x => x.ProInfo);
       References<AreaInfo>(x => x.AreaInfo);
   }

私が望むのは、proprices の lazyload() を無効にすることです。これにより、データベースから製品のすべての価格を取得できます。しかし、 onetomany を this:HasMany<ProPrice>(x => x.ProPrices).Not.LazyLoad()に変更すると、無限ループが発生します。私は何が恋しいですか?

4

1 に答える 1

1

ループがどこから来るのか正確にはわかりませんが、双方向の関連付けが原因である可能性があります。一方を Inverse() として宣言する必要があります。これは、双方向の関連付けによる 1 対多の関係であるため、ProInfoMap でのみ実行できます。

HasMany<ProPrice>(x => x.ProPrices).Inverse().Not.LazyLoad();

それを試してみてください。無限ループが解消される場合があります。

于 2012-06-03T20:43:55.923 に答える