Db第一种方法,表中的复合主键,EF不为该表创建实体

时间:2016-12-02 11:45:20

标签: sql-server entity-framework

在Entity framework DB第一种方法中,我在Db表中有两列是复合主键。当我为该数据库创建实体框架时,该表不会在那里显示为实体。

2 个答案:

答案 0 :(得分:0)

要创建复合主键,您可以添加数据注释[Key, Column(Order = 0)]

public class Person
{
  [Key, Column(Order = 0)]
  public string ID{ get; set; }

  [Key, Column(Order = 1)]
  public int IDTwo { get; set; }
}

您也可以使用Fluent Api。

答案 1 :(得分:0)

如果它是数据库中的一个连接表(用于实现多对多关系),则在“数据库优先”方法中,它在edmx Dig中将不可见。

多对多关系(Reference

学生课程具有*多重性标记的多对多关系。这意味着一名学生可以报名参加许多课程,而且一门课程可以教给许多学生。

数据库包含 StudentCourse 联接表,该表包括两个表(“ Student和Course”表)的主键。实体框架通过不为CSDL和可视设计器中的联接表设置实体集(DbSet属性)来表示多对多关系。相反,它通过映射来管理。

注意:仅当联接表(在这种情况下为StudentCourse)不包括两个表的PK以外的任何列时,实体框架才支持多对多关系。如果联接表包含其他列,例如DateCreated,则EDM也会为中间表创建一个实体,并且您将必须手动管理多对多实体的CRUD操作。


还请注意,在我们的模式下,link(aka交界处)表未表示为实体。没有有效负载时(即没有标量属性)。如果我们有一个有效载荷,那么我们就不应该具有多对多关系,而应该拥有一个具有一对多关系的第四实体。有关更多信息,请参见this