在新的MVC-5
模板中,名为App_Start
的{{1}}文件夹中有一个文件,其中包含以下行(以及其他一些数据):
Startup.Auth.cs
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
是什么?和这样调用a single instance per request
有什么区别:
ApplicationDbContext
并将此声明作为字段放在var context = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
:
Controller class
是否有处理public class HomeController : Controller
{
private ApplicationDbContext context = new ApplicationDbContext();
的首选方法?是context
提供singleton class
优先?
答案 0 :(得分:1)
只要在调用某个操作方法时创建上下文对象,这只是一种方便的方法。您希望每个请求都有一个实例,因为您希望将所有对象附加到同一个上下文实例。您还希望上下文的生命周期为请求生命周期。
如果您要使用第二种方法private ApplicationDbContext context = new ApplicationDbContext();
,则必须将其放入每个控制器中。您可以创建某种基本控制器来执行相同的操作,并从基本控制器继承。
同样,它只是一种用于演示的便捷方法。