3

NHibernate を使用して、非常に奇妙なデータベースのモデルを生成しようとしています。テーブル自体には表示専用の主キーがあり、実際の関係はすべて一意の列にあります。たとえば、製品 ID の主キーと一意の製品名列を持つ製品テーブルです。別のテーブル demand には、製品名の列があり、関係を定義しています。この状況が理想的ではないことはわかっていますが、どうしようもありません。

いずれにせよ、Fluent NHibrenate を使用して製品を需要にマッピングすることはできましたが、エンティティを遅延ロードさせることはできないようです。

public class Demand
{
  public virtual DemandId { get; set; }
  public virtual Product { get; set; }
}

public class DemandMap : ClassMap<Demand>
{
  public DemandMap()
  {
    this.Table("Demand");
    this.LazyLoad();
    this.Id(x => x.DemandId);
    this.References(x => x.Product).PropertyRef(x => x.ProductName).LazyLoad();
  }
}

遅延読み込みが機能しない理由について誰か洞察がありますか? SQLプロファイラーで需要とともに製品がフェッチされているのを見ることができるので、そうではないことはわかっています.

4

1 に答える 1

1

私の考え(おそらく、「HasMany」を使用してみてください。例がありますが、これについて何かを読むことができます):

ファーストクラス

public class Demand
{
  public virtual int DemandId { get; set; }
  public virtual int Product { get; set; }
  public virtual IEnumerable<NewClass> Name {get; set;} 
}

  this.HasMany(x=> x.Product).Column("Product_id").not.nullable;

セカンドクラス

public class NewClass
{
  public virtual Demand Product_id {get; set;}
}

this.References(x => x.Product).Column("product_id).not.nullable
于 2012-10-18T22:37:56.277 に答える