2012-01-22 15 views
0

私はEFを使用してトランザクションをトランザクションに関連付けようとしています。現在は、同じトランザクションを製品に1回だけマップすることができます。エンティティフレームワーク - 多くの多対多リレーションシップ

たとえば、トランザクションでは、同じ製品の2つを追加しようとすると機能しません。 1つのマッピングだけが保存されます。

これは可能ですか?または、回避策を作成するだけですか?

答えて

1

EFでは、多対多リレーションシップに重複を追加することはできません。結合表には、表のPKとして参加表の主キーのみを含める必要があります。

この問題を回避するには、結合テーブルをエンティティとしてマッピングし、結合テーブルのPKとして自動インクリメントIDを作成します。

public class ProductTransaction 
{ 
    [Key] 
    public int Id { get; set; } 

    public int ProductId { get; set; } 

    public int TransactionId { get; set; } 

    public Product Product { get; set; } 

    public Transaction Transaction { get; set; } 
} 

public class Product 
{ 
    [Key] 
    public int Id { get; set; } 

    public virtual ICollection<ProductTransaction> Transactions { get; set; } 
} 

public class Transaction 
{ 
    [Key] 
    public int Id { get; set; } 

    public virtual ICollection<ProductTransaction> Products { get; set; } 
} 
関連する問題