0

属性関係で多対多のマッピングに問題があります。ここの問題とよく似ています

fluent nhibernate - 属性を使用した多対多のマッピング

しかし、中間クラスには主キーがありません。代わりに、他の 2 つのクラスの ID で構成されています。

見積SKUクラス(ミドルクラス)

public class QuotationSKUCost : Entity
{
    public virtual decimal UnitPrice { get; set; }
    public virtual Quotation Quotation { get; set; }
    public virtual QuotationRequestSKU QuotationRequestSKU { get; set; }
}

見積クラス

public class Quotation : Entity
{
    public virtual int Id { get; set; } 
    public virtual DateTime ValidUntil { get; set; }
    public virtual string Data { get; set; }
    public virtual ICollection<QuotationSKUCost> QuotationSKUCosts { get; set; }
}

見積もり依頼 SKU

public class QuotationRequestSKU : Entity
{
    public virtual int Id { get; set; }
    public virtual int Quantity { get; set; }
    public virtual ICollection<QuotationSKUCost> QuotationSKUCost { get; set; }
}

ミドルクラスマッピング!!

    public QuotationSKUCostMapping()
    {
        Table("QuotationSKUCost");
        CompositeId() //need to map QuotationId and QuotationRequestSKUid as Composite key
          .KeyProperty(x => x.Quotation, "QuotationId")
          .KeyReference(x => x.QuotationRequestSKU, "QuotationRequestSKUId");
        Map(x => x.UnitPrice);
    }

デバッグしようとしたときに発生するエラーは次のとおりです。

次のタイプを判別できませんでした: ORM.Entities.Quote.Quotation、ORM、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null、列: NHibernate.Mapping.Column(QuotationId)

編集:引用マッピングの追加

    public QuotationMapping()
    {
        Id(x => x.Id).Column("QuotationId");
        Map(x => x.ValidUntil);
        Map(x => x.Data);
        HasMany(x => x.QuotationSKUCosts).KeyColumn("QuotationId");
    }
4

1 に答える 1

0

よく調べて答えを見つけた

          .KeyProperty(x => x.Quotation, "QuotationId")
          .KeyReference(x => x.QuotationRequestSKU, "QuotationRequestSKUId");

する必要があります

          .KeyReference(x => x.Quotation, "QuotationId")
          .KeyReference(x => x.QuotationRequestSKU, "QuotationRequestSKUId");
于 2012-10-09T10:54:08.993 に答える