实体框架身份增量配置

Mic*_*ito 5 sql-server entity-framework

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

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

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

更新一些其他细节:

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

Lad*_*nka 3

您无法更改种子 - EF 不允许这样做。另外,更改现有表上的种子意味着删除该列并重新创建它。所以这部分的答案是否定的。

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

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

检查这篇关于为现有数据库创建初始化程序的文章