如何解决Action <DbContextOptionsBuilder> OptionsAction的空引用错误
我正在尝试将配置值从我的appsettings.json文件移动到sql Server数据库中。我已经尝试了this和this链接,但是当它为OptionsAction运行时,仍然出现空引用错误。请以任何可能的方式提供帮助,并在下面找到我的代码:
OrgConfigurationSource:
public class OrgConfigurationSource : IConfigurationSource
{
public Action<DbContextOptionsBuilder> OptionsAction { get; set; }
public bool ReloadOnChange { get; set; }
public int ReloadDelay { get; set; } = 500;
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new OrgConfigurationProvider(this);
}
OrgConfigurationProvider:
public class OrgConfigurationProvider : ConfigurationProvider
{
private readonly OrgConfigurationSource source;
public OrgConfigurationProvider(OrgConfigurationSource source)
{
this.source = source;
}
public override void Load()
{
var builder = new DbContextOptionsBuilder<StorageContext>();
source.OptionsAction(builder);
using (var context = new StorageContext(builder.Options))
{
context.Database.EnsureCreated();
var config = context.ConfigurationValues.SingleOrDefault();
if (config == null) return;
Data = new Dictionary<string,string>();
Data.Add($"{nameof(OrgConfigurationValue)}.{nameof(OrgConfigurationValue.Name)}",config.Name);
}
}
Program.cs:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging( l => l.AddConsole())
.ConfigureAppConfiguration((hostingContext,config) =>
{
config.AddOrgConfiguration();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
EntityFrameworkExtensions:
public static class EntityFrameworkExtensions
{
public static IConfigurationBuilder AddOrgConfiguration(this IConfigurationBuilder builder)
{
return builder.Add(new OrgConfigurationSource());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。