如何在EntityFramework Codefirst中以编程方式更新数据库?

12

我正在使用ASP.NET MVC框架编写一个简单的CMS(用于大学毕业项目)。我的问题在于模块的数据迁移策略。由于每个模块在安装时都会更新数据库架构,因此必须在模块安装系统中实现数据库迁移机制。好的,Entity Framework中的数据迁移已经存在(感谢微软),但是迁移命令在包管理器控制台中运行。有没有办法以编程方式运行Data-Migration代码?任何帮助都将不胜感激。

2个回答

21
如果您已在Package Manager Console中启用了自动迁移,则可以在应用程序的init部分(例如在SimpleMembershipInitializer中)使用以下代码:
var migratorConfig = new Migrations.Configuration();
var dbMigrator = new DbMigrator(migratorConfig); 
dbMigrator.Update();

在您的项目中,将Migrations.Configuration放置在您的命名空间(YourProjectNamespace.Migrations)中的迁移配置类。

如果您以编程方式使用它,您应首先关闭EF初始化程序:

Database.SetInitializer<YourDBContext>(null);

问题是程序化更新会在数据库不存在的情况下创建一个数据库。


我的自动迁移未启用,但这段代码似乎仍在运行。 - Nathan
1
可能是版本的问题。当我发布答案时,我正在使用EF 4.0。 - Bronek

11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接