我有一个带有 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/