【问题标题】:How to get the database context in a controller如何在控制器中获取数据库上下文
【发布时间】:2016-08-20 15:24:50
【问题描述】:

我整天都在想办法在默认 MVC 6 项目的 ManageController.cs 中获取 ApplicationDbContext

我上网并搜索了很多,但似乎没有人遇到与我相同的问题。这可能很简单,但我无法弄清楚。 有人有想法吗?

这是我尝试过的:

IServiceProvider service = new IServiceProvider();
var _context = service.GetService<ApplicationDbContext>();

【问题讨论】:

    标签: c# .net asp.net-core asp.net-core-mvc asp.net-mvc-controller


    【解决方案1】:

    使用构造函数注入:

    public class ManageController
    {
        private readonly ApplicationDbContext _context;
    
        public ManageController(ApplicationDbContext context)
        {
            _context = context;
        }
    }
    

    然后您可以在控制器方法中使用_context 对象。文档的Dependency Injection 部分提供了更多信息。

    【讨论】:

      【解决方案2】:

      我正在使用 Visual Studio 2015 Update 3。在 Visual Studio 的未来版本中可能不需要以下某些步骤。

      1. 使用No Authentification 创建 ASP.NET Core(带有 .NET Core)项目。

      2. 在包管理器控制台中,依次执行以下各项。

       Install-Package Microsoft.EntityFrameworkCore.SqlServer
       Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
       Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Tools -Pre
       Install-Package Microsoft.VisualStudio.Web.CodeGenerators.Mvc -Pre
      
      1. 将以下内容添加到project.json 中定义的"tools":{}
      "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
      "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
      
      1. 将以下内容添加到appsettings.json

      "ConnectionStrings": {
      "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
      },
      
      1. 将以下内容添加到startup.cs 中的ConfigureServices,就在services.AddMvc(); 之前。
      string connection = Configuration.GetConnectionString("DefaultConnection");
      services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-10
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        相关资源
        最近更新 更多