实体框架身份增量配置

时间:2011-11-17 00:43:16

标签: sql-server entity-framework

是否可以配置实体框架模型,以便在从模型创建数据库时,生成的标识列具有1以外的标识增量?例如,我可能有一个标识列,我想要id的序列:1,11,21,31,...(按10而不是1)。

我不太关心身份种子,因为在EF生成数据库模式后,我可以轻松地使用sql语句重新种子表。但是,似乎如果我想更改身份增量,那么我必须重新创建表(至少在Microsoft Sql Server中)。由于外键关系,这可能有点复杂。

那么有没有办法在EF中配置标识列?如果没有,如果可能的话,我也可以在对数据库执行之前检查和修改模式创建脚本。

更新以及其他一些细节:

我已经覆盖了SeedDropCreateDatabaseIfModelChanges的附带实施者)公开的IDatabaseInitializer方法。在这里,我在EF创建模式后运行一些自定义初始化例程。我想我可以添加另一个来创建后修改每个标识列规范。但是,如上所述,要更改标识增量,我必须重新创建每个表(及其外键)。如果在创建标识列之后没有简单的方法来更改标识列增量,我想在创建标识列之前对其进行配置,以便EF使用除1以外的增量创建标识列,或者修改生成的表创建脚本在他们被执行之前由EF。

1 个答案:

答案 0 :(得分:3)

你不能改变种子 - EF不允许这样做。还要更改现有表means dropping the column上的种子并再次创建它。所以这部分的答案是否定的。

创建脚本“是可能的”,但是你将失去EF为你做的许多功能。你可能会失败:

  • 数据库创建 - 您只能获得创建表的脚本
  • 数据库一致性检查(EdmMetadata支持)

检查this article是否为要检索的现有数据库创建初始化程序