我有一个使用Entity Framework的代码第一种方法创建的数据库。
目前它只有5个表。其中一个名为Incidents
的表支持Incident
C#类。该课程需要另外一个属性 - bool HasClaim
。
我知道由于数据库是用DropCreateDatabaseWhenModelChanges
初始化的,所以当我尝试使用调整后的实体类进行初始化时,我的数据库数据将被清除,并且将创建一个新的数据库。
让这个类/架构更新的最简单的路径是什么? (通常,如:将数据读入XML,重新创建数据库并手动,从C#代码中放置新实体。)
P.S。 也许我可以继续从当前数据库创建数据库模型,调整它,调整代码,并重新配置为不再使用代码优先?我似乎只是代码优先,如果你100%确定在DB投入生产后你不会改变模型的话。但是有了成功的项目,情况永远不会如此!
答案 0 :(得分:1)
最好的方法是使用EntityFramework.SqlMigrations
您可以修改Models
和DbSet
并将更改迁移到数据库而不删除并重新创建数据库。
使用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策略(对于测试环境),然后使用另一个用于升级生产环境的工具编写架构更改脚本。