第三方数据上下文的依赖注入.净的核心

本文关键字:核心 注入 依赖 上下文 第三方 数据 | 更新日期: 2023-09-27 18:11:29

. NET核心Web API,我需要使用MongoDb。以下是我到目前为止的实现,但我被困在解决依赖关系。

DataContext:

 public class AppDbContext
    {
        public IMongoDatabase MongoDatabase { get; set; }
        public AppDbContext()
        {
            var client = new MongoClient("mongodb://localhost:27017");
            MongoDatabase = client.GetDatabase("cse-dev-db");
        }
    }

存储库:

public class BuyRepository: IBuyRepository {
    private readonly AppDbContext _appDbContext;
    public BuyRepository(AppDbContext appDbContext) {
        _appDbContext = appDbContext;
    }
    public Buy Add(Buy buy) {
        _appDbContext.MongoDatabase.GetCollection<Buy("Buy").InsertOne(buy);
        return buy;
    }
}

控制器:

private readonly BuyRepository _buyRepository;
public ValuesController(BuyRepository buyRepository) {
    _buyRepository = buyRepository;
}

我的问题是如何在ConfigureServices中添加这些依赖关系

public void ConfigureServices(IServiceCollection services) {
    services.AddApplicationInsightsTelemetry(Configuration);
    services.AddMvc();
    // How to add dependencies here
}

PS:我已经看到了这个,但是它不工作。

<标题> 更新

我已经按照用户的评论试过了

public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddApplicationInsightsTelemetry(Configuration);
            services.AddScoped<AppDbContext>();
            services.AddMvc();
            services.AddScoped<IBuyRepository, BuyRepository>();
        }

现在我得到以下异常

无法解析服务的类型"CseApi.Repositories。在尝试激活时购买存储库"CseApi.Controllers.ValuesController"。

第三方数据上下文的依赖注入.净的核心

尝试注册如下服务:

public void ConfigureServices(IServiceCollection services) {
    services.AddApplicationInsightsTelemetry(Configuration);
    services.AddScoped<AppDbContext>();
    services.AddScoped<IBuyRepository, BuyRepository>();
    services.AddMvc();
    // How to add dependencies here
}

更新注释

控制器代码应该如下所示:

private readonly IBuyRepository _buyRepository;
public ValuesController(IBuyRepository buyRepository) {
    _buyRepository = buyRepository;
}

从this更新你的控制器注入:

private readonly BuyRepository _buyRepository;

:

private readonly IBuyRepository _buyRepository;