手动更新由EF代码优先创建的数据库模式

时间:2012-01-19 16:10:24

标签: .net entity-framework ef-code-first database-schema

我有一个使用Entity Framework的代码第一种方法创建的数据库。

目前它只有5个表。其中一个名为Incidents的表支持Incident C#类。该课程需要另外一个属性 - bool HasClaim

我知道由于数据库是用DropCreateDatabaseWhenModelChanges初始化的,所以当我尝试使用调整后的实体类进行初始化时,我的数据库数据将被清除,并且将创建一个新的数据库。

让这个类/架构更新的最简单的路径是什么? (通常,如:将数据读入XML,重新创建数据库并手动,从C#代码中放置新实体。)

P.S。 也许我可以继续从当前数据库创建数据库模型,调整它,调整代码,并重新配置为不再使用代码优先?我似乎只是代码优先,如果你100%确定在DB投入生产后你不会改变模型的话。但是有了成功的项目,情况永远不会如此!

2 个答案:

答案 0 :(得分:1)

描述

最好的方法是使用EntityFramework.SqlMigrations

您可以修改ModelsDbSet并将更改迁移到数据库而不删除并重新创建数据库。

  

使用NuGet

可以使用      

Install-Package EntityFramework.SqlMigrations

Scott Hanselman撰写了一篇关于此事的精彩博文。

更多信息

答案 1 :(得分:0)

查看Entity Framework迁移: http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-automatic-migrations-walkthrough.aspx

另一种方法是只在调试版本中使用DropCreateDatabaseWhenModelChanges策略(对于测试环境),然后使用另一个用于升级生产环境的工具编写架构更改脚本。