问题描述
我正在使用 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 (将#修改为@)