.net核心故障实例化存储库类

时间:2018-12-01 23:17:41

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

我有以下存储库类:

public class TestRepository
{
    private readonly MyDbContext db;

    public TestRepository(MyDbContext context)
    {
        db = context;
    }

    public Test GetTest(int Id)
    {
        return db.Test.Find(Id);
    }
}

如何从控制器实例化该类?

当我尝试:

TestRepository repo = new TestRepository(MyDbContext);

我收到错误消息MyDbContext是在给定上下文中无效的类型。所以我想知道我应该传递什么参数。

1 个答案:

答案 0 :(得分:1)

您需要对此进行更改

new TestRepository(MyDbContext);

为此

new TestRepository(db);

最好的方法是在任何可能的地方使用DI。

您可以在DI容器中注册存储库类,然后在该给定实例上调用您的方法。

将此添加到您的startup.cs

services.AddScoped<TestRepository>();

并在您的控制器中使用它

private readonly TestRepository _testRepository;

public IndexController(TestRepository testRepository)
{
    _testRepository = testRepository;
}

Dependency injection in ASP.NET Core
Service lifetimes