c# - 将 DbContext 解析为派生类的 ASP.NET MVC 问题

标签 c# asp.net asp.net-core dependency-injection asp.net-core-2.0

我有一个带有 Microsoft.Extensions.DependencyInjection 的 ASP.NET Core 2.0 应用程序。

我将上下文 ApplicationDbContext 添加到 Startup.cs 文件中:

services.AddDbContext<ApplicationDbContext>(options => 
    options.UseSqlServer(DefaultConnection));

我的ApplicationDbContext继承了DbContext类:

在通用 Controller 中,我需要一个 DbContext 类:

public GenericController(DbContext context){

但是,Microsoft.Extensions.DependencyInjection 无法将 DbContext 解析为 ApplicationDbContext 注册服务。

如何将所需的 DbContext 类注入(inject)到我的服务类中?

我可以更改 GenericController,但 GenericController 所在的项目没有引用 ApplicationDbContext

我正在开发一个中间件,它应该需要专门用于其他项目的 DbContext。所以 Controller 位于中间件中,它没有对专门类的引用。

最佳答案

the project where GenericController lies does not have reference to the ApplicationDbContext

这就是您 100% 的问题。

您需要确保 ApplicationDbContext 位于使用它的服务可以引用的项目中:

public GenericController(ApplicationDbContext context){

或者您需要创建一个由 ApplicationDbContext 实现的 IApplicationDbContext,可以从使用它的服务中引用它:

public GenericController(IApplicationDbContext context){

单独注入(inject) DbContext 并不能解决问题,因为它不会公开应用程序需要使用的任何表。

关于c# - 将 DbContext 解析为派生类的 ASP.NET MVC 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174940/

相关文章:

c# - 使用 NoRM 在 MongoDB 中延迟加载

mongodb - 如何将Bson ObjectId添加到JObject

asp.net - Mono 和 ASP.NET 身份验证

c# - 如何获取行数据绑定(bind)事件中单元格的值?以及如何检查单元格是否为空?

c# - 使用 Entity Framework 读取 SQL Server 表时对象名称无效

asp.net-core - 无法加载类型 'Microsoft.EntityFrameworkCore.Infrastructure.DesignTimeProviderServicesAttribute'

c# - 在C#中读取datagridview每一行的单元格

使用 AES 的 C# 私有(private)/公共(public)加密

c# - 用 C# 加密 AES 以匹配 Java 加密

asp.net - 访问被拒绝 - 401.2 : Unauthorized Error