在Entity Framework中使用标识定义PK的正确方法是什么

时间:2013-07-05 07:39:51

标签: ef-code-first entity-framework-5

在EF 5.0(代码优先)中使用标识定义PK的正确方法是什么?

我开始使用[Key]似乎创建了带有标识的密钥,但我看到了许多使用

的示例
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

这两种方式都有关系吗?第二个选项更好,因为它更具描述性等。??

由于

1 个答案:

答案 0 :(得分:0)

简答:

[Key]本身就足够了,如果你正确遵循惯例,你甚至不需要它。另一方面,[Key]在语义上等于[Key(DatabaseGeneratedOption.Identity)],它们是相同的,它们等于骨骼,没有任何区别。

长答案:

  • 您有强制使用的情况 [Key(DatabaseGeneratedOption.Identity)]当你的时候发生这种情况 主键是Guid因为你需要让数据库和EF 知道它应该为它生成一个值,他们只知道这样做 所以当主键是int
  • 时 主键是
  • [Key(DatabaseGeneratedOption.None)] 由用户明确插入,例如主键是 社会安全号码(数据库不应生成此号码)
  • 最后一种情况,[Key(DatabaseGeneratedOption.Computed)] 已经表中的列时使用 计算,例如在表中有Fullname列时 这是通过组合Firstname和Lastname列计算的, 映射到a时,此选项必须才能 现有数据库。

大部分信息来自书籍Programming Entity Framework : Code First