EntityFramework修改数据库而不是重新创建

时间:2012-01-06 16:06:26

标签: c# database asp.net-mvc-3 entity-framework

我正在使用EF 4.1使用C#MVC3。 当我修改我的一个模型(IE:我将属性public bool dead {set; get;}添加到我的Player.cs)的atributte时,EF删除并重新创建整个数据库。

我知道这发生了,因为我有这个:

的Global.asax.cs

protected void Application_Start(){
    ...
    Database.SetInitializer<GameContext>(new DropCreateDatabaseIfModelChanges<GameContext>());
    ...
}

我只想EF将新列添加到我的Player表中,没有重新创建完整的数据库,我和Django有同样的问题,但是我用South来解决这个问题(一个惊人的工具)。存在类似于EF的东西吗?

我无法使用public class GameInitializer : DropCreateDatabaseIfModelChanges<GameContext>定义为数据库播种,并自行输入所有值,因为它们是dinamic。

我几乎认为唯一的选择是手动将列添加到我的表中,好吧......我有一个问题,当我将MDF文件添加到我的服务器资源管理器时,项目无法打开数据库再次(即使我分离并关闭连接),它有点奇怪。

嗯,这是我的问题! TIA。

1 个答案:

答案 0 :(得分:5)

EF目前没有任何增量方式来构建数据库,但有一个名为Code First Migrations的单独项目将提供此功能。迁移目前处于测试阶段,应该是未来EF版本的一部分。

因此,您可以使用迁移,也可以手动修改数据库(尝试关闭/打开VS以解决当前问题)。