重要的提示:自这篇文章发布以来,配置 Entity Framework 7 服务的语法已发生变化,在最近几轮测试版中该语法是准确的。不过,同样的想法仍然适用于新语法。
这是我一直在做的事情:
services.AddEntityFramework().AddSqlServer()
.AddDbContext<DataContextA>(options => options.UseSqlServer(Configuration.Get("StorageSettings:SQLConnectionString")))
.AddDbContext<DataContextB>(options => options.UseSqlServer(Configuration.Get("StorageSettings:SQLConnectionString")));
where StorageSettings:SQLConnectionString
是 SQL Express 数据库的连接字符串。目前,我让 DataContextA 和 DataContextB 共享同一个数据库,但您可以将它们分开。如果您想继续使用Configuration
方法(我不知道,非常酷!)你可以这样做:
{
"Data": {
"DefaultConnectionA": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=ContextADatabase;Trusted_Connection=True;MultipleActiveResultSets=true",
"DefaultConnectionB": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=ContextBDatabase;Trusted_Connection=True;MultipleActiveResultSets=true"
}
},
"EntityFramework": {
"DataContextA": {
"ConnectionStringKey": "Data:DefaultConnectionA:ConnectionString"
}
"DataContextB": {
"ConnectionStringKey": "Data:DefaultConnectionB:ConnectionString"
}
}
}
with
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<DataContextA>()
.AddDbContext<DataContextB>();
Both DataContextA
and DataContextB
可以注入到你的控制器中:
public class MyController: Controller {
public MyController(DataContextA dataA, DataContextB dataB) {
// Do stuff
}
}