1

我正在开发一个asp.net mvc项目。我想知道如何在应用程序设置期间(由客户端自己)在没有在新数据库上手动运行迁移的情况下,使用新数据库更改/切换数据库。使用实体框架代码优先的方法切换数据库

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

请提出解决方案。

回答

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>()); 
    } 
+0

这是与sql服务器正常工作。在sql服务器,我只是用新的数据库替换我的连接字符串,它运行良好,没有运行迁移,但是当我使用oracle数据库并更改连接到新的数据库时,我必须运行所有th迁移。 –

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/

[更新] 一个小窍门,你可以使用实体框架迁移功能为您的发展,一旦你最后定稿的实体,一切都那么你可以简单地删除迁移文件,并删除完成了它从应用程序挂钩并与客户/用户共享。 然后实体框架默认会创建新的数据库或将更新任何现有的数据库与您的项目实体。 您可以使用默认的asp.net web api模板检查相同的内容。在创建新项目时,如果您选择asp.net身份进行身份验证,则只包含少数实体,这些实体会在第一次运行应用程序时自动创建。

相关问题