实体框架标识增量配置



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

我不太关心身份种子,因为在EF生成db模式后,我可以很容易地用sql语句重新播种表。然而,如果我想更改标识增量,那么我必须重新创建表(至少在Microsoft Sql Server中)。由于外键关系的关系,自动执行这个操作可能有点复杂。

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

用一些额外的细节更新

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

你不能改变种子- EF不允许。另外,更改现有表上的种子意味着删除列并重新创建它。所以这个问题的答案是否定的。

创建脚本"是可能的",但你会失去EF为你做的很多功能。你可能会输:

  • 数据库创建-你将只得到脚本来创建表
  • 数据库一致性检查(EdmMetadata支持)

查看关于为检索

的现有数据库创建初始化器的文章

最新更新