EF Code First使用现有映射类进行多对多映射

时间:2013-01-13 16:59:11

标签: c# entity-framework ef-code-first

我有三个班级

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

public class ProductXUser // Mapping class
{
    public int Id { get; set; }
    public int User_Id { get; set; }
    public int Product_Id { get; set; }
    public DateTime DateMapped { get; set; }
}

如何使用User类作为映射表,在Product类和ProductXUser类之间映射多对多关系(使用Fluent API)?

1 个答案:

答案 0 :(得分:3)

你做不到。将联结表公开为实体后,就无法使用多对多关系。您必须使用两个一对多关系。一个从UserProductXUser,第二个从ProductProductXUser。您还必须更改ProductUser中的导航属性,以指向ProductXUser的集合。只有当您不将联结表公开为实体时,才能将多对多关系直接起作用。