C# 声明数据库上下文的控制器级实例

C# 声明数据库上下文的控制器级实例,c#,entity-framework,C#,Entity Framework,在控制器中,像这样声明数据库上下文实例有什么区别: public class MyController : Controller { private readonly MyDatabaseEntities _context = new MyDatabaseEntities(); public ActionResult Index() { ... } } 与此相比: public class MyController : Controller {

在控制器中,像这样声明数据库上下文实例有什么区别:

public class MyController : Controller
{
    private readonly MyDatabaseEntities _context = new MyDatabaseEntities();

    public ActionResult Index()
    {
        ...
    }
}
与此相比:

public class MyController : Controller
{
    private readonly MyDatabaseEntities _context;

    public MyController()
    {
        _context = new MyDatabaseEntities();
    }

    public ActionResult Index()
    {
        ...
    }
}
我刚刚开始意识到,我在ASP.NET应用程序中处理数据库上下文的方式可能有一段时间不正确(或至少不理想),我正在阅读并思考如何开始使用依赖注入,但对于初学者,我只是想知道我是否在控制器中正确地实例化了数据库上下文


顺便说一句,我仍然在.NETFramework4.7.2中工作。希望我们能很快开始在.NET5中工作

是的,有区别,但你只能在IL中看到。检查这个答案@IrakliGabisonia是否正确;字段初始化器在构造函数之前运行,但从逻辑上讲,您的示例是相同的。如果要迁移到DI,则需要通过构造函数将
MyDatabaseEntities
声明为依赖项。