jim*_*utt 5 c# asp.net asp.net-mvc entity-framework entity-framework-core
我正在努力与使用MVC 6和EF7的ASP.NET vNext构建Web系统相处.我正在看这个教程:http://stephenwalther.com/archive/2015/01/17/asp-net-5-and-angularjs-part-4-using-entity-framework-7
在页面上,您将看到如何将dbContext添加到项目中,并在启动文件中注册,如下所示:
// Register Entity Framework
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<MoviesAppContext>();
Run Code Online (Sandbox Code Playgroud)
上下文类看起来像这样:
public class MoviesAppContext:DbContext
{
public DbSet<Movie> Movies { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但现在我需要添加一个额外的DbContext.虽然我不知道如何注册这个额外的上下文,以便它将被EF使用并可能在我的项目中使用.
假设我已经创建了一个像这样的新上下文:
public class MyNewSuper:DbContext
{
public DbSet<Model1> Model1 { get; set; }
public DbSet<Model2> Model2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我如何继续注册它以便在我的项目中使用呢?
Cud*_*nny 14
重要说明:自本文发布以来,配置Entity Framework 7服务的语法已发生变化,截至最近几个beta轮次,这一过程是准确的.同样的想法仍应适用于新语法.
这是我一直在做的事情:
services.AddEntityFramework().AddSqlServer()
.AddDbContext<DataContextA>(options => options.UseSqlServer(Configuration.Get("StorageSettings:SQLConnectionString")))
.AddDbContext<DataContextB>(options => options.UseSqlServer(Configuration.Get("StorageSettings:SQLConnectionString")));
Run Code Online (Sandbox Code Playgroud)
其中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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
同
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<DataContextA>()
.AddDbContext<DataContextB>();
Run Code Online (Sandbox Code Playgroud)
双方DataContextA并DataContextB可以注入到你的控制器:
public class MyController: Controller {
public MyController(DataContextA dataA, DataContextB dataB) {
// Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8675 次 |
| 最近记录: |