以下仅供参考。
我有一个$(document).ready(function(){
$(window).on('dragenter', function(){
do stuff
});
});
,内容如下:
secrets.json
我需要使用以下播种机为数据库播种。
{
"Message": "I still know what you did last summer."
}
在public static class SeedData
{
public static void Initialize(IServiceProvider isp, IConfiguration c)
{
using (var context = isp.GetRequiredService<MyContext>())
{
if (context.Members.Any())
return;
context.Members.AddRange
(
new Member
{
Message= c["Message"]
}
);
context.SaveChanges();
}
}
}
内调用播种机,如下所示。
Main
如何从public static void Main(string[] args)
{
IWebHost iwh = BuildWebHost(args);
using (IServiceScope iss = iwh.Services.CreateScope())
{
IServiceProvider isp = iss.ServiceProvider;
try
{
// IConfiguration c = ??????
SeedData.Initialize(isp, c);
}
catch (Exception ex)
{
ILogger<Program> logger = isp.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
iwh.Run();
}
获取IConfiguration c
?
答案 0 :(得分:2)
您可以像对待MyContext
服务一样:
var configuration = isp.GetRequiredService<IConfiguration>();
如果将两个依赖项都传递给SeedData.Initialize
而不是依赖项和IoC容器,那会更好:
public static void Initialize(MyContext context, IConfiguration config)
{
...
}
IServiceProvider isp = iss.ServiceProvider;
try
{
var configuration = isp.GetRequiredService<IConfiguration>();
var context = isp.GetRequiredService<MyContext>();
SeedData.Initialize(context, configuration);
}
有了这个,你至少可以避免使用Initialize
方法中的服务定位器反模式。