如何在Entity Framework Code First中以编程方式更新数据库?

时间:2012-11-12 11:01:54

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

我正在编写一个简单的CMS而不是ASP.NET MVC框架(用于大学最终项目)。我的问题在于模块的数据迁移策略。每个模块在安装时都会更新数据库模式,数据库迁移机制必须在模块安装系统中实现。实体框架中的data-migration已经存在(感谢MS),但迁移命令在包管理器控制台中运行。有没有办法运行{{1代码编程? 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:19)

如果您已在程序包管理器控制台中启用了自动迁移,则可以在应用程序的init部分中使用以下代码(例如,在 SimpleMembershipInitializer 中):

var migratorConfig = new Migrations.Configuration();
var dbMigrator = new DbMigrator(migratorConfig); 
dbMigrator.Update();

其中 Migrations.Configuration 是项目中放置到命名空间的迁移配置类( YourProjectNamespace.Migrations )。

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

Database.SetInitializer<YourDBContext>(null);

如果不存在,程序化更新会创建一个数据库。

答案 1 :(得分:9)

此类在代码中公开EF迁移:

System.Data.Entity.MigrateDatabaseToLatestVersion

在EF中,迁移可以在整个数据库上工作 - 而不是模块化的一部分。


刚刚找到这个课程:

System.Data.Entity.Migrations.DbMigrator