小编Kyl*_*nes的帖子

AutoFac/.NET Core - 注册DBcontext

我有一个新的.NET Core Web API项目,它具有以下项目结构:

API - >业务/域 - >基础架构

只有API方法,API非常薄.业务/域层具有我的所有业务逻辑.最后,我的Infrastructure层使用EF Core 2.0创建了我的DB类.

我知道使用.NET Core内置依赖注入我可以将API项目的引用添加到Infrastructure项目,然后在StartUp.cs文件中添加以下代码:

services.AddDbContext<MyContext>(options => options.UseSqlServer(connectionString));
Run Code Online (Sandbox Code Playgroud)

但是,我想保持更传统的关注点分离.到目前为止,我在我的Infrastructure层添加了一个模块,试图进行如下注册:

builder.Register(c =>
        {
            var config = c.Resolve<IConfiguration>();

            var opt = new DbContextOptionsBuilder<MyContext>();
            opt.UseSqlServer(config.GetSection("ConnectionStrings:MyConnection:ConnectionString").Value);

            return new MyContext(opt.Options);
        }).AsImplementedInterfaces().InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)

但是,DBContext没有注册.尝试访问注入的DBContext的任何类都无法解析该参数.

有没有办法在.NET Core Web API项目中使用AuftoFac在单独的项目中注册DBContext?

c# autofac .net-core ef-core-2.0

16
推荐指数
4
解决办法
7640
查看次数

将数据作为密钥名称包含在JSON中是否正确?

我正在使用提供JSON有效负载的API.JSON中的一个特性实际上是一个数据元素,因此我无法在不添加其他类的情况下对有效负载进行反序列化.

这是JSON:

{
      "company": "ABC Inc.",
      "packages": {
          "$package1": {
          "code": "$package1",
          "name": "Foo",
          "price": 1000
        },
        "$package2": {
          "code": "$package2",
          "name": "Bar",
          "price": 2000
        },
        "$package3": {
          "code": "$package3",
          "name": "Another",
          "price": 3000
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够使用Newtonsoft.Json序列化以下类:

public class Rootobject
{
    public string company { get; set; }
    public Packages packages { get; set; }
}

public class Packages
{
    public Package1 package1 { get; set; }
    public Package2 package2 { get; set; }
    public Package3 package3 { get; …
Run Code Online (Sandbox Code Playgroud)

c# standards json json.net

4
推荐指数
1
解决办法
75
查看次数

标签 统计

c# ×2

.net-core ×1

autofac ×1

ef-core-2.0 ×1

json ×1

json.net ×1

standards ×1