处理实体框架上下文

本文关键字:上下文 框架 实体 处理 | 更新日期: 2023-09-27 18:16:51

在新的MVC-5模板中,App_Start文件夹中有一个名为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的首选方法?提供contextsingleton class是首选吗?

处理实体框架上下文

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

如果你要使用第二种方法private ApplicationDbContext context = new ApplicationDbContext();,你必须将其放入每个控制器。你可以创建一些基本控制器做同样的事情并从你的基本控制器继承。

这只是一个用于演示的方便方法