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

Beh*_*ili 10 asp.net-mvc entity-framework c#-4.0

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

Bro*_*nek 19

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

var migratorConfig = new Migrations.Configuration();
var dbMigrator = new DbMigrator(migratorConfig); 
dbMigrator.Update();
Run Code Online (Sandbox Code Playgroud)

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

如果以编程方式使用它,首先应关闭EF初始值设定项:

Database.SetInitializer<YourDBContext>(null);
Run Code Online (Sandbox Code Playgroud)

问题是程序化更新如果不存在则创建数据库.


Nic*_*ler 9

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

System.Data.Entity.MigrateDatabaseToLatestVersion

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


刚刚发现这个课程:

System.Data.Entity.Migrations.DbMigrator