c# - 依赖注入具有依赖注入形式 DbContext 的类
问题描述
我怎样才能注入这个:
private readonly CarModelsController _carModelsController;
public AdminController(CarModelsController carModelsController)
{
_carModelsController = carModelsController;
}
当 CarModelsController 看起来像这样时:
[ApiController]
public class CarModelsController : ControllerBase
{
private readonly ApplicationDbContext _context;
public CarModelsController(ApplicationDbContext context)
{
_context = context;
}
注入时需要 DbContext 吗?是否应该以其他方式完成?去这里的正确方法是什么?我从来没有学过这个。
解决方案
我建议您查看将控制器相互注入的选择。
创建一个包含 Db 相关操作的服务抽象和类
public interface IDataService {
//...expose desired members
}
public class DataService: IDataService {
private readonly ApplicationDbContext context;
public DataService(ApplicationDbContext context) {
this.context = context;
}
//...other members implemented
}
并将其注入您的控制器。
public class AdminController: ControllerBase {
private readonly IDataService service;
public AdminController(IDataService service) {
this.service = service
}
//...
}
[ApiController]
public class CarModelsController : ControllerBase
private readonly IDataService service;
public CarModelsController(IDataService service) {
this.service = service
}
//...
}
剩下的就是在组合根目录中启动时向 DI 容器注册所有依赖项。
假设默认的 .Net Core DI
services.AddDbContext<ApplicationDbContext>(...);
services.AddScoped<IDataService, DataService>();
ASP.NET Core 中的引用依赖注入
推荐阅读
- linux - AWS - 安全组未打开端口
- php - 以 JSON 格式显示 SQL 结果并使用 Javascript 解析数据。从 [{:,}] 中分离文本
- python - 我怎样才能让 flake8 只检测错误?
- azure - 在 Azure Blob 存储中索引数据的最佳方式?
- database - 如何为电子商务应用程序选择数据库
- reactjs - React Native init 项目 Linting 报错问题
- swift - 存储和调用图像数组的最佳方法
- python - 在 Pycharm 应用程序中安装 seaborn 模块的问题
- python - 我如何控制python中for循环的迭代
- javascript - 是否可以通过 chrome 扩展来观察网站 DOM 上的类变化?