none
在MVC项目中,如果有两个database,要改变它们的表结构, 做migration时怎么在两个数据库间切换? RRS feed

  • 问题

  • 在MVC项目中,假如我有两个database,一个是身份认证的,一个是其他数据的。假如我改变了第一个database的一些model,我可以用

    PM>enable-migration -contextTypeName Myappliction.models.DefaultConnection

    PM>add migration v1

    PM>update-database

    现在我想切换去改变另一个database的一些model,然后更新第二个数据库,我该怎么做?

    先谢了!


    王林

    2014年12月15日 15:40

答案

  • 你好,谢谢你在两个地方回答了我的问题。不过我觉得你的答案需要一些改进。

    直接输入enable -migrations -myContext 是不行的,会提示Migrations have already been enabled in project 'WebApplication2'。所以要改成

    PM>enable-migrations -Force -myContext

    但是这样做有一个问题,就是第一个数据库配置文件被覆盖,而且你要删掉第一个数据库所留下的迁移记录才能添加迁移。我是想保存这些记录的。所以我查了迁移命令,可以用-MigrationsDirectory参数将配置文件放在不同的文件夹里:

    PM>enable-migrations -contextTypeName WebApplication2.Models.ApplicationDbContext -MigrationsDirectory:"Migrations\ApplicationDbContext"

    PM> enable-migrations -contextTypeName WebApplication2.DAL.myContext -MigrationsDirectory:"Migrations\myContext"

    在添加迁移时,也要用-ConfigurationTypeName参数指定迁移配置文件:

    PM> add-migration v1 -ConfigurationTypeName WebApplication2.Migrations.ApplicationDbContext.Configuration

    PM> add-migration v2 -ConfigurationTypeName WebApplication2.Migrations.myContext.Configuration

    这样做有些麻烦,但是能达到我的要求。


    王林

    • 已标记为答案 wanglin005 2014年12月16日 16:01
    2014年12月16日 16:00

全部回复

  • 你好,

    如果你想要改变到另一个的database中的model,你需要在你的代码中重新定义一个NewDbContext去映射该数据库。

    然后在PM窗口去,去enable -migration -NewDbContext

    然后 update-database

    2014年12月16日 1:24
  • http://stackoverflow.com/questions/20349573/mvc4-multiple-databases

    先参考上面网址,可以依照里面方法较为方便,但必须要有两个连线字串,所以要在 web.config 文件内新增一组。记得下指令前先重建。

    如果是自动移转,则必需要在 Global.asax.cs 内的 Application_Start 中加上

    System.Data.Entity.Database.SetInitializer(
        new System.Data.Entity.MigrateDatabaseToLatestVersion<
            Myappliction.models.XXXXXX,
            Migrations.Configuration>());


    2014年12月16日 1:42
  • 你好,谢谢你在两个地方回答了我的问题。不过我觉得你的答案需要一些改进。

    直接输入enable -migrations -myContext 是不行的,会提示Migrations have already been enabled in project 'WebApplication2'。所以要改成

    PM>enable-migrations -Force -myContext

    但是这样做有一个问题,就是第一个数据库配置文件被覆盖,而且你要删掉第一个数据库所留下的迁移记录才能添加迁移。我是想保存这些记录的。所以我查了迁移命令,可以用-MigrationsDirectory参数将配置文件放在不同的文件夹里:

    PM>enable-migrations -contextTypeName WebApplication2.Models.ApplicationDbContext -MigrationsDirectory:"Migrations\ApplicationDbContext"

    PM> enable-migrations -contextTypeName WebApplication2.DAL.myContext -MigrationsDirectory:"Migrations\myContext"

    在添加迁移时,也要用-ConfigurationTypeName参数指定迁移配置文件:

    PM> add-migration v1 -ConfigurationTypeName WebApplication2.Migrations.ApplicationDbContext.Configuration

    PM> add-migration v2 -ConfigurationTypeName WebApplication2.Migrations.myContext.Configuration

    这样做有些麻烦,但是能达到我的要求。


    王林

    • 已标记为答案 wanglin005 2014年12月16日 16:01
    2014年12月16日 16:00