处理实体框架上下文

时间:2014-08-07 11:15:15

标签: c# entity-framework ef-code-first asp.net-mvc-5

在新的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优先?

1 个答案:

答案 0 :(得分:1)

只要在调用某个操作方法时创建上下文对象,这只是一种方便的方法。您希望每个请求都有一个实例,因为您希望将所有对象附加到同一个上下文实例。您还希望上下文的生命周期为请求生命周期。

如果您要使用第二种方法private ApplicationDbContext context = new ApplicationDbContext();,则必须将其放入每个控制器中。您可以创建某种基本控制器来执行相同的操作,并从基本控制器继承。

同样,它只是一种用于演示的便捷方法。