我正在使用EF 6.xx中的Code-First构建一个新数据库
我的模型ID用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
即
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
现在,这在正常情况下运行时效果很好,但是,在我的数据库种子中,我需要使用一些现有数据填充新数据库,因此需要在播种期间强制使用ID。
为此,我在模型上注释了属性,并在种子结束时调用
context.Database.ExecuteSqlCommand("ALTER TABLE " + tableName + " ADD DEFAULT (newsequentialid()) FOR [ID]");
这会重新启用默认值,并且可以看到直接在数据库中输入新行时的工作 - 但是,当您在代码中将实体添加到数据库时,ID变为00000000-0000-0000-0000-000000000000
- 向我显示数据库没有生成Guid。
现在 - 我可以将属性注释掉,播种我的数据库,然后返回模型并删除注释 - 尽管这会变得很痛苦,特别是当我需要做一堆时。
so - 有没有办法禁用或忽略属性(在代码中),然后在IDatabaseInitializer中重新启用它?