2016-11-28 120 views
0

我正在使用MVC中的实体框架以模型优先方法开发项目。几天后,我需要添加一些属性到我现有的模型。后来,当我试图构建解决方案它给了我下面的错误:如何在EF MVC中删除并重新创建数据库后维护现有数据

Model has changed.

所以,我GOOGLE了它找到了一个解决方案:

Database.SetInitializer<ClubmansGuideDB>(new DropCreateDatabaseIfModelChanges<ClubmansGuideDB>()); 

它工作正常,但如何实体框架保持现有数据特定的模型关联表?有人可以解释吗?

+0

你将失去​​所有的数据,你需要使用[迁移](https://msdn.microsoft .com/en-us/library/jj591621(v = vs.113).aspx)的方法。 – 3615

+0

删除并重新创建数据库后,我能够获得现有的数据甚至可以请你给我一个很好的解释 – Surya

+0

如果你设置了一些种子,可能会发生这种情况。所以静态数据将再次被引入,但是如果您将添加1条新记录,则不应该保留。 – 3615

回答

0

您不应该使用此初始化,而是使用数据库迁移,该迁移将生成一个脚本,以仅使用添加到模型中的少数属性来更改数据库。

你可以这样做:

1-打开NuGet包管理器控制台从工具菜单 - >怒江获取软件包管理器 2-运行Enable-Migrations命令 3-运行Add-Migration Initial命令,这将代码添加迁移到如果这是你第一次创建整个数据库。如果您已经进行迁移,然后运行add-migration -Name somename 5-运行命令update-database -script这将生成一个数据库脚本来更改数据库。

使用步骤#5脚本并运行它针对数据库,它只会做必要的修改

+0

我知道迁移过程,但我想知道在删除并重新创建数据库后数据是如何维护的。 – Surya

+0

迁移不会丢失并创建数据库,它将生成一个脚本来改变数据库,例如:添加列,删除列... 只有您正在使用的数据库初始值设定项会删除并创建数据库 –

+0

但我能使用上面的语句获取数据和更新数据。我的问题是,如果我删除并重新创建数据库,Entity Framework如何维护数据。 – Surya

相关问题