相关疑难解决方法(0)

ASP.NET Core中的通用存储库,而Startup.cs中每个表没有单独的AddScoped行?

我的项目中有一个通用存储库.请考虑以下控制器代码段

public class Lookup1Controller : Controller
{
    readonly MyDbContext _db;

    public Lookup1Controller(MyDbContext dataContext)
    {
        _db = dataContext;
    }

    public async Task<IActionResult> Index()
    {

        IGenericRepository<Lookup1> _repository = new GenericRepository<Lookup1>(_db);
        var lookup1s = await _repository.SelectAll();

        return  View(lookup1s);
    }
Run Code Online (Sandbox Code Playgroud)

我认为不需要在我的Generic存储库以及每个控制器中都有我的数据库引用.

我重构它:

public class Lookup1Controller : Controller
{
    private IGenericRepository<Lookup1> _repository;

    public Lookup1Controller(IGenericRepository<Lookup1> repository)
    {
        _repository = repository;
    }

    public async Task<IActionResult> Index()
    {
        var lookup1s = await _repository.SelectAll();

        return  View(lookup1s);
    }

}
Run Code Online (Sandbox Code Playgroud)

从我读到的内容来看,它更简洁,也是ASP.NET 5的最佳实践.但如果我在浏览器中访问该控制器路径,我将收到以下错误:

InvalidOperationException: Unable to resolve service for type 'MyProject.Data.IGenericRepository`1[MyProject.Models.Lookup1]' while …
Run Code Online (Sandbox Code Playgroud)

generics dependency-injection asp.net-core-mvc asp.net-core

52
推荐指数
1
解决办法
2万
查看次数