为什么存在`DatabaseGeneratedOption.None`?

时间:2013-03-22 10:19:04

标签: entity-framework entity-framework-5 entity-framework-mapping

这与Property(() => p).HasDatabaseGeneratedOption()电话一起使用。是或许可以关闭默认的DB值生成?

2 个答案:

答案 0 :(得分:28)

EF使用DatabaseGeneratedOption来确定如何处理新实体的键列值。如果DatabaseGeneratedOptionIdentity,EF知道可以忽略属性设置的值,并且应该使用来自数据库的值。如果DatabaseGeneratedOptionNone EF,则会将该属性的值作为键列的值插入数据库。

在Code First中 - 当Code First约定找到一个可以作为给定实体的键属性的int属性时,默认情况下它们会将此列配置为标识列(这意味着数据库将生成键列/属性的值) 。如果您想自己设置键值,DatabaseGeneratedOption.None允许您覆盖它。

答案 1 :(得分:3)

其效果是将EF配置为在插入数据库后不获取新的标识值。