使用实体框架代码优先方法

时间:2016-02-29 06:30:09

标签: asp.net-mvc entity-framework asp.net-mvc-4 ef-code-first ef-migrations

我正在开发一个asp.net mvc项目。我想知道如何在应用程序设置期间(通过客户端本身)更改/切换数据库与新数据库,而无需在新数据库上手动运行迁移。

我想更改连接字符串中的数据库名称,就是这样。我的项目应该配置好并适用于新数据库。

请提出解决方案。

2 个答案:

答案 0 :(得分:1)

你可以设置" MigrateDatabaseToLatestVersion"在配置文件中:

internal sealed class Configuration : System.Data.Entity.MigrateDatabaseToLatestVersion<DbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        //..................
    }

    protected override void Seed(DbContext context)
    {
        ///....
    }
}

<强>更新

您可以在global.asax文件中设置Database.SetInitializer:

    protected void Application_Start()
    {
      ....
      Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
    }

答案 1 :(得分:1)

如Iraj所述,有一个数据库初始化程序,您可以使用它在启动期间使用更改的数据库设置迁移:

Database.SetInitializer<ObjectContext>(
    new MigrateDatabaseToLatestVersion<ObjectContext, Configuration>());

另一种方法:

var Configuration = new DbContextConfiguration();
Configuration.TargetDatabase = new DbConnectionInfo(
    database.ConnectionString, database.ProviderName);

var MyMigrator = new DbMigrator(configuration);
MyMigrator.Update();
MyMigrator.GetPendingMigrations(); ' Optional

您还可以创建一个设置页面,该页面可以将数据库名称(或完整的连接字符串)作为客户端的输入,您可以使用它在运行应用程序时通过代码运行迁移。瞧!

参考 - http://romiller.com/2012/02/09/running-scripting-migrations-from-code/

[更新] 一个小技巧,您可以使用Entity Framework迁移功能进行开发,一旦完成实体和所有内容的完成,您只需删除迁移文件并从应用程序中删除它的钩子并与客户端/用户共享。 然后,默认情况下,实体框架将创建新数据库,或者将使用项目实体更新任何现有数据库。 您可以使用默认的asp.net web api模板进行相同的检查。在创建新项目时,如果您选择asp.net身份进行身份验证,则它包含几个在第一次运行应用程序时自动创建的实体。

相关问题