使用appsettings.json配置DbContext映射

托马斯·施耐特

我正在使用.netCore和Entity Framework从SQL数据库获取一些数据。
我已经设置了DbContext

public partial class DashboardContext : DbContext
{
    public NotfallDashboardContext(DbContextOptions<NotfallDashboardContext> options) : base(options) {}

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<DashboardData>(entity =>
        {
            ...
        }
    }

    public virtual DbSet<DashboardData> DashboardData { get; set; }
}

并通过以下设置将其注入到我的控制器中

services.AddDbContext<DashboardContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DashboardDatabase")));

现在,DashboardData该类使用TableAttirbute连接到正确的表和架构。

[Table("TableName", Schema = "dbo")]
public partial class DashboardData
{
    ...
}

我想做的是将这两个字符串“ TableName”和“ dbo”提取到我的appsettings.json配置中。我已经将配置添加到appsettings中,进行了TableConfiguration类和设置依赖项注入:

TableConfiguration.cs

public class TableConfiguration
{
    public string DatabaseView { get; set; }
    public string DatabaseSchema { get; set; }
}

appsettings.json

"TableConfiguration": {
    "DatabaseTable": "TableName",
    "DatabaseSchema": "dbo"
} 

startup.cs

services.Configure<TableConfiguration>(Configuration.GetSection("TableConfiguration"));

是否可以注入或以其他方式使用DasboardData属性中的配置?

haim770

在您的Startup.cs

services.Configure<TableConfiguration>(Configuration.GetSection("TableConfiguration"));

然后,注入IOptions<TableConfiguration> tableConf您的上下文并将其存储以供以后使用OnModelCreating()

public class DashboardContext : DbContext
{
    private readonly TableConfiguration tableConf;

    public DashboardContext(DbContextOptions<DashboardContext> options, IOptions<TableConfiguration> tableConf) : base(options)
    {
        this.tableConf = tableConf.Value;
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<DashboardData>(entity =>
        {
            entity.ToTable(this.tableConf.DatabaseTable, this.tableConf.DatabaseSchema);
        });
    }

    public virtual DbSet<DashboardData> DashboardData { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在.NET Core中使用appsettings.json而不是nlog.config文件配置NLog?

使用appsettings.json配置Kestrel监听端口Dotnet Core 2预览2

Azure函数-使用appsettings.json

ASP NET Core 2.0 appsettings.Development.json无法与日志记录配置一起使用

MVC Core 2.0,如何通过配置使用appSettings.json文件

尝试使用appsettings.json配置Serilog电子邮件接收器以与Gmail一起使用

Visual Studio Mac appsettings.json允许使用简洁的JavaScript

无法使用环境变量覆盖appsettings.json设置

如何使用appsettings.Development.json删除appsettings.json中的节点?

如何使用.NET Core根据发布配置文件更新appsettings.json?

如何使用appsettings.json覆盖serilog设置

ASP.Net Core 2-使用具有来自appsettings的defaultConnectionString的DBContext

是否可以将.Net Standard System.Configuration.ConfigurationManager.AppSettings与appSettings.json文件一起使用

从MVC 5中的appsettings.json读取和使用设置

使用ConfigurationManager.AppSettings的appsettings.json和类库

如何使用asp.net core从appsettings.json获取配置数据并做出反应

使用ASPNETCORE_ENVIRONMENT覆盖Azure上的appsettings.json

在.Net Core AppSettings /配置中使用句点处理键名

如何使用值列表读取appsettings.json?

将appsettings.json映射到类

如何编写使用 MSBuild 执行 appSettings.json 转换的任务?

appsettings.json 中的配置类

从 appsettings.json 获取 ConnectionStrings 配置设置

使用 appsettings.json 文件时 Serilog.Sinks.MySQL 的配置

Appsettings.json 如何检查正在使用的环境?

如何使用 Entity Framework Core 和 Simple Injector 在 .NET Core WebApi 的 DBContext 中访问 AppSettings.json 文件?

如何让 NCrunch 使用特定的 appsettings.json 文件?

.Net Core 3.1 Worker Service 使用 Appsettings.json

使用 Env 变量覆盖 appsettings.json 数组