繁体   English   中英

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

[英]Manually updating a database schema created by EF code-first

我有一个使用实体框架的代码优先方法创建的数据库。

目前只有5张桌子。 其中一个表名为Incidents ,支持Incident C#类。 该类只需bool HasClaim增加一个属性bool HasClaim

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

对我来说,进行此类/方案更新的最简单途径是什么? (通常,例如:将数据读入XML,重新创建DB并从C#代码手动创建新实体。)

PS也许我可以继续从当前数据库创建数据库模型,对其进行调整,调整代码并重新配置为不再使用代码优先? 我似乎目前认为代码优先是一个好习惯,前提是您100%确定在DB投入生产后不更改模型。 但是有了成功的项目,情况就不会如此!

描述

最好的方法是使用EntityFramework.SqlMigrations

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

它可以使用NuGet提供

安装包EntityFramework.SqlMigrations

Scott Hanselman撰写了一篇不错的博客文章。

更多信息

看看实体框架迁移: http : //blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-automatic-migrations-walkthrough.aspx

另一种方法是仅在调试版本中(针对测试环境)使用DropCreateDatabaseWhenModelChanges策略,然后使用另一个工具对架构更改进行脚本化以升级生产环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM