自从开始我正在开展的项目以来,我多次重新设计了我的课程计划。
起初我并不知道数据注释,所以我有migration1
,其中我的ID没有DatabaseGenerated.Identity
选项,而migration4
已经拥有它。
事实证明EF不会这样(https://entityframework.codeplex.com/workitem/509和EF5一样),所以当我添加一些种子数据时,它会抛出异常
无法将值NULL插入列' primarykeycolumn',table' tablename';列不允许空值。 INSERT失败。
真正有趣的是,当我从头开始删除所有现有迁移和搭建新版本时,种子方法运行没有任何问题。
所以我有一个问题:我是否需要在对方案进行更改时执行此操作,例如添加Identity
等数据注释,或者是否有办法保存以前的迁移?因为在现实生活中丢弃和重新创建数据库会导致巨大的数据丢失,我想避免这种情况。
答案 0 :(得分:0)
添加迁移。在您的软件包管理器控制台中
Add-Migration Test1
在迁移类的Configuration.cs中,您将看到Up方法和Down方法。它就像之前和之后的变化。如果要撤消更改,可以调用它们。
doing Add-Migration "NameoftheMigration" does not implement it
你需要打电话
Update-Database
如果它告诉您存在错误,或潜在的数据丢失。
Update-Database -Force
如果您选择使用CodeFirst。你不能真正从设计改变表,然后通过代码。你必须选择一个。由于CodeFirst Migration依赖于Models。数据优先,依靠数据设计。