有没有办法在使用IDatabaseInitilizer时临时禁用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

时间:2014-01-21 17:32:39

标签: c# entity-framework

我正在使用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中重新启用它?

0 个答案:

没有答案