ASP.NET MVC切换数据库:从database1转database2遇DbContext报错
这个问题的核心是你的项目中存在多个DbContext类(比如业务自定义的上下文、Identity框架自带的ApplicationDbContext等),EF迁移工具无法自动确定要使用哪一个来执行数据库更新操作,解决方法很直接:
执行命令时明确指定目标DbContext
在Package Manager控制台中,使用-Context参数指定你要操作的DbContext类名称,同时可以配合-ConnectionStringName指定新的连接字符串(如果你的DbContext构造函数依赖连接字符串名称的话),示例命令:Update-Database -Context YourBusinessDbContext -ConnectionStringName database2Connection
替换YourBusinessDbContext为你项目中对应业务逻辑的DbContext类名,database2Connection为你在Web.config中配置的database2的连接字符串名称。确认DbContext与连接字符串的绑定
检查你的DbContext构造函数,确保它读取的是新的连接字符串,比如:
public class YourBusinessDbContext : DbContext { public YourBusinessDbContext() : base("name=database2Connection") // 这里要匹配新连接字符串的名称 { } // 你的实体DbSet定义 public DbSet<YourEntity> YourEntities { get; set; } }
如果后续频繁执行迁移操作,也可以在创建迁移时就指定Context(Add-Migration InitialCreate -Context YourBusinessDbContext),这样后续的Update-Database命令如果是针对该迁移,也可以不用重复指定,但为了保险起见,每次更新时明确指定Context是最稳妥的方式。
内容的提问来源于stack exchange,提问作者zowaayy

