我试图弄清楚如何在EF7 RC1中创建第二个DB上下文.在过去,我可以使用带有:base("connectionName")的构造函数,但这似乎不再是一个选项,因为它说不能将字符串转换为System.IServiceProvider.
我的第二个上下文代码如下:
public class DecAppContext : DbContext
{
public DecAppContext()
// :base("DefaultConnection")
{
}
public DbSet<VignetteModels> VignetteModels { get; set; }
public DbSet<VignetteResult> Result { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在我的config.json中,我指定了连接:
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-xxxxx...;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
Run Code Online (Sandbox Code Playgroud)
在我的启动的配置服务部分中,我添加了两个上下文:
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]))
.AddDbContext<DecAppContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
Run Code Online (Sandbox Code Playgroud)
applicationDB上下文工作正常,因为我可以创建用户并登录而不会出现问题
但是,当我尝试通过以下方式访问控制器中的其他上下文时:
private DecAppContext db = new DecAppContext();
var vignette = db.VignetteModels.SingleOrDefault(v => v.CaseId == vid);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
没有配置数据库提供程序.在设置服务时,通过在DbContext类或AddDbContext方法中覆盖OnConfiguring来配置数据库提供程序.
EF7 RC1中具有多个数据库上下文并访问它们的任何工作示例都将非常受欢迎.