Asp.net mvc 3 实体框架-多对多关系

Asp.net mvc 3 实体框架-多对多关系,asp.net-mvc-3,entity-framework,many-to-many,Asp.net Mvc 3,Entity Framework,Many To Many,我试图使用EF将产品与交易联系起来。目前,它只允许我将同一事务映射到产品上一次 例如,在一个事务中,尝试添加两个相同的产品不起作用。它将只存储一个映射 有可能这样做吗?还是我应该创建一个解决方案?EF不允许您向多对多关系添加重复项。联接表应仅包含作为表主键的参与表的主键 您可以通过将联接表映射为实体并创建一个自动递增的id作为联接表的主键来解决此问题 public class ProductTransaction { [Key] public int Id { get; set;

我试图使用EF将产品与交易联系起来。目前,它只允许我将同一事务映射到产品上一次

例如,在一个事务中,尝试添加两个相同的产品不起作用。它将只存储一个映射


有可能这样做吗?还是我应该创建一个解决方案?

EF不允许您向多对多关系添加重复项。联接表应仅包含作为表主键的参与表的主键

您可以通过将联接表映射为实体并创建一个自动递增的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; }
}
公共类ProductTransaction
{
[关键]
公共int Id{get;set;}
public int ProductId{get;set;}
public int TransactionId{get;set;}
公共产品产品{get;set;}
公共事务{get;set;}
}
公共类产品
{
[关键]
公共int Id{get;set;}
公共虚拟ICollection事务{get;set;}
}
公共类事务
{
[关键]
公共int Id{get;set;}
公共虚拟ICollection产品{get;set;}
}