在EF 5.0(代码优先)中使用标识定义PK的正确方法是什么?
我开始使用[Key]
似乎创建了带有标识的密钥,但我看到了许多使用
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
这两种方式都有关系吗?第二个选项更好,因为它更具描述性等。??
由于
答案 0 :(得分:0)
简答:
[Key]
本身就足够了,如果你正确遵循惯例,你甚至不需要它。另一方面,[Key]
在语义上等于[Key(DatabaseGeneratedOption.Identity)]
,它们是相同的,它们等于骨骼,没有任何区别。
长答案:
[Key(DatabaseGeneratedOption.Identity)]
当你的时候发生这种情况
主键是Guid
因为你需要让数据库和EF
知道它应该为它生成一个值,他们只知道这样做
所以当主键是int
。[Key(DatabaseGeneratedOption.None)]
由用户明确插入,例如主键是
社会安全号码(数据库不应生成此号码)。[Key(DatabaseGeneratedOption.Computed)]
仅
当已经表中的列时使用
计算,例如在表中有Fullname列时
这是通过组合Firstname和Lastname列计算的,
映射到a时,此选项必须才能
现有数据库。