【问题标题】:How to update-database Programmatically in EntityFramework Codefirst?如何在实体框架代码中以编程方式更新数据库?
【发布时间】:2012-11-12 11:01:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    Database.SetInitializer<YourDBContext>(null);
    

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

    【讨论】:

    • 我没有启用自动迁移,这段代码似乎仍然对我有用。
    • 可能是版本问题。当我发布答案时,我使用的是 EF 4.0。
    【解决方案2】:

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

    System.Data.Entity.MigrateDatabaseToLatestVersion

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


    刚刚也找到了这个类:

    System.Data.Entity.Migrations.DbMigrator

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2016-06-19
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多