如何在EF MVC中删除并重新创建数据库后维护现有数据
问题描述:
我正在使用MVC中的实体框架以模型优先方法开发项目。几天后,我需要添加一些属性到我现有的模型。后来,当我试图构建解决方案它给了我下面的错误:如何在EF MVC中删除并重新创建数据库后维护现有数据
Model has changed.
所以,我GOOGLE了它找到了一个解决方案:
Database.SetInitializer<ClubmansGuideDB>(new DropCreateDatabaseIfModelChanges<ClubmansGuideDB>());
它工作正常,但如何实体框架保持现有数据特定的模型关联表?有人可以解释吗?
答
您不应该使用此初始化,而是使用数据库迁移,该迁移将生成一个脚本,以仅使用添加到模型中的少数属性来更改数据库。
你可以这样做:
1-打开NuGet包管理器控制台从工具菜单 - >怒江获取软件包管理器 2-运行Enable-Migrations
命令 3-运行Add-Migration Initial
命令,这将代码添加迁移到如果这是你第一次创建整个数据库。如果您已经进行迁移,然后运行add-migration -Name somename
5-运行命令update-database -script
这将生成一个数据库脚本来更改数据库。
使用步骤#5脚本并运行它针对数据库,它只会做必要的修改
你将失去所有的数据,你需要使用[迁移](https://msdn.microsoft .com/en-us/library/jj591621(v = vs.113).aspx)的方法。 – 3615
删除并重新创建数据库后,我能够获得现有的数据甚至可以请你给我一个很好的解释 – Surya
如果你设置了一些种子,可能会发生这种情况。所以静态数据将再次被引入,但是如果您将添加1条新记录,则不应该保留。 – 3615