11

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

4

2 回答 2

21

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

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

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

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

Database.SetInitializer<YourDBContext>(null);

问题是程序更新会创建一个数据库,如果它不存在的话。

于 2013-05-03T16:42:45.780 回答
10

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

System.Data.Entity.MigrateDatabaseToLatestVersion

在 EF 中,迁移虽然适用于整个数据库 - 而不是一个模块化部分。


刚刚也找到了这个类:

System.Data.Entity.Migrations.DbMigrator

于 2012-11-12T11:33:49.927 回答