【问题标题】:How to pass connection string to UnitOfWork project from startup.cs asp.net core如何从startup.cs asp.net核心将连接字符串传递给UnitOfWork项目
【发布时间】:2017-08-06 18:35:28
【问题描述】:

我在AppDbContext 中创建了构造函数,并且在UnitofWork 中实现了上下文,它将字符串传递给上下文,但是当我注册unitofwork 时,如何将连接字符串传递给startup.csRepositoryUnitOfWork 在不同的项目中

以下是我的代码,

到构造函数的连接字符串

private readonly string _connection;
public AppDbContext(string connection) 
{

    _connection=connection;

}

UnitOfWork 构造函数

public UnitOfWork(string connection)
{
    _context =  new AppDbContext(connection);
}

StartUp.cs 中,我可以传递下面的连接字符串,从 appsettings.json 读取吗?

 services.AddTransient<IUnitOfWork, UnitOfWork>();

【问题讨论】:

  • 不要那样做。如果已经使用 DI,则将上下文注入 UOW
  • 所以我从数据项目中的 appsettings.json 读取连接并将其传递给上下文。对吗?
  • 您阅读了根项目的 appsetting.json。将连接字符串复制到该 json 文件中。

标签: c# asp.net-core .net-core entity-framework-core


【解决方案1】:

不要那样做。如果已经使用 DI,则将上下文注入 UOW 并在启动期间配置上下文。

public class UnitOfWork : IUnitOfWork {
    private readonly AppDbContext _context;
    public UnitOfWork(AppDbContext context) {
        _context =  context;
    }

    //...other code removed for brevity
}

并使用以下示例创建数据库上下文。

public class AppDbContext : DbContext {
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)  {
    }

    //...other code removed for brevity
}

然后您使用依赖注入注册所有内容,包括上下文

public void ConfigureServices(IServiceCollection services) {

    services.AddDbContext<AppDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    services.AddTransient<IUnitOfWork, UnitOfWork>();

    services.AddMvc();
}

配置从 appsettings.json 文件中读取连接字符串。

{
  "ConnectionStrings": {
    "DefaultConnection": "connection string here"
  }

}

【讨论】:

  • 真棒 :) 像黄油一样工作。我还有一个问题,是否可以仅将 JWT 用于 API,例如 api/v1/customers 。这意味着 JWT 仅在 URL 为 api/v1/whatever 时才有效。我想通过客户名称限制对 api 的访问,我有每个客户令牌的用户名,令牌中有用户名。所以我想要的是 Api/v1/costomers/username/addresses,因此授权属性将检查 jwt 令牌用户名是否与 url 中的用户名匹配,如果不匹配,则响应消息“您无权使用该用户名访问此 api”。谢谢你uuuuuuuu
  • 是的,但这是一个全新的话题和问题。您应该先尝试一下,如果遇到困难,请提出一个新问题。关于这个主题有很多关于 SO 的答案,所以我建议先搜索。
  • 好的,谢谢了解。 Stackoverflow 应该有一个小费系统,人们可以提供像复数视力一样的东西,人们可以通过意愿向专家支付一些东西。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
  • 1970-01-01
相关资源
最近更新 更多