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

本文关键字:新创建 创建 修改 数据库 EntityFramework | 更新日期: 2023-09-27 18:19:48

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

我知道这是因为我有这个:

Global.asax.cs

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

我只想EF将新列添加到我的Player表中,而不是重新创建完整的数据库,我在Django中也遇到了同样的问题,但我使用了South来解决这个问题(一个amazing工具)。是否存在类似EF的东西?

我不能用public class GameInitializer : DropCreateDatabaseIfModelChanges<GameContext>定义为数据库种子,并自己放置所有值,因为它们是普通的。

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

那是我的问题!TIA。

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

EF目前没有任何增量方法来构建数据库,但有一个名为"代码优先迁移"的单独项目将提供此功能。迁移目前处于测试版,应该是未来EF版本的一部分。

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