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