我正在使用.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
该类使用Table
Attirbute连接到正确的表和架构。
[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属性中的配置?
在您的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] 删除。
我来说两句