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

问题描述

我正在使用 Entity Framework Core 和 Simple Injector IoC Container 构建 ASP.NET Core WebApi 服务。 该应用程序通过 Npgsql.EntityFrameworkCore.PostgeSQL 使用 postgresql 数据库。

这是我的启动ServicesInstaller的代码片段:

public class Startup
{
    public IConfiguration Configuration { get; }
    private IConfigurationRoot configurationRoot;
    private Container container;

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;

        // Build configuration info
        configurationRoot = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json",optional: true,reloadOnChange: true)
            .Build();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();

        // Initialize Container
        container = new SimpleInjector.Container();
        container.Options.ResolveUnregisteredConcreteTypes = false;
        container.ConfigureServices();
        
        services.AddSimpleInjector(container,options =>
        {
            options.AddAspNetCore()
            .AddControllerActivation();
            options.AddLogging();
        });
    }
}

服务安装程序:

public static class ServicesInstaller
{
    public static void ConfigureServices(this Container container)
    {
        container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

        //Assembly.Load will not re-load already loaded Assemblies
        container.Register<IFooContext,FooContext>(Lifestyle.Scoped);
        container.Register<FooContext>(Lifestyle.Scoped);
    }
}

这是我的 DB Context 类的代码片段:

public interface IFooContext
{
}
    
public class FooContext : DbContext,IFooContext
{
    public FooContext()
    {
    }
    
    protected override void OnConfiguring(
        DbContextOptionsBuilder optionbuilder)
    {
        optionbuilder.UseNpgsql(
            "Server=.;Port=5432;Database=...;User ID=...;Password=...;");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

目前我正在将我的连接字符串硬连线到 PostGreSQL DB。我希望能够从数据库上下文中的 AppSettings.json 文件中检索连接字符串。我相信正确的做法应该是在 OnConfiguring() 方法中。

正确吗?

给定这个模型,我该如何正确访问 DBContext 类中的 AppSettings.json 文件?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)