[英]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
您可以修改Models
和DbSet
,并将更改迁移到数据库中,而无需删除并重新创建数据库。
它可以使用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.