我在 ASP.NET Core 2.2 应用程序中收到此警告
警告:Microsoft.EntityFrameworkCore.Infrastruct[10402] 已创建 20 多个“IServiceProvider”实例供实体框架内部使用。这通常是由于将新的单例服务实例注入每个 DbContext 实例而引起的。例如,调用 UseLoggerFactory 每次都会传入一个新实例 - 有关更多详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=869049 。考虑检查对“DbContextOptionsBuilder”的调用,这可能需要构建新的服务提供程序。
花了一些时间后我发现它发生在startup.cs中。我正在使用 IdentityServer3 + OpenIDCnnection 进行身份验证。
用户成功登录后,客户端应用程序对用户进行授权,确保用户存在于客户端应用程序的数据库中。
客户端应用程序的Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IAccountService, AccountService>();
services.AddDbContext<Data.Entities.MyDBContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"),
sqlServerOptions => sqlServerOptions.CommandTimeout(sqlCommandTimeout));
});
services.AddAuthentication(options =>
{
// removed for brevity purpose
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
// removed for brevity purpose
})
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Events = new OpenIdConnectEvents()
{
OnTokenValidated = async context =>
{
Data.Entities.UserAccount userAccount = …Run Code Online (Sandbox Code Playgroud) 我正在为 Cosmos DB(基于文档或 JSON 的 DB)创建一个数据库播种器。一些 C# 模型有一个属性 Config,它是 JSON,所以我一直在使用这种类型的代码来设置该属性:
Config = JObject.FromObject(new { })
Run Code Online (Sandbox Code Playgroud)
它的工作原理与在对象内实际设置属性一样:
Config = JObject.FromObject(new
{
contextOptionSource = "$.domains.governmentEntityType_active"
}),
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何将 Config 设置为对象数组。我实际上尝试使用 C# 模型,认为 JObject 会像这样为我转换它们:
Config = JObject.FromObject(
new List<Question>
{
new Question
{
Key = "contact",
Label = "Contact Person",
HelpText = "",
Config = JObject.FromObject(new {}),
Type = "text",
ContextTarget = "$.data.contact"
},
new Question
{
Key = "company",
Label = "Company Name",
HelpText = "",
Config = JObject.FromObject(new {}),
Type = …Run Code Online (Sandbox Code Playgroud) 我的 Up() 中有以下内容
public override void Up()
{
try
{
Sql("drop index [IX_SalesInvoiceLine] on dbo.SalesInvoiceLines");
}
catch (Exception)
{
// ignored
}
string sql = @"CREATE UNIQUE NONCLUSTERED INDEX [IX_SalesInvoiceLine] ON [dbo].[SalesInvoiceLines] ( [SalesInvoice_Id] ASC, [seqNo] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]";
Sql(sql);
}
Run Code Online (Sandbox Code Playgroud)
当我在调试器中单步执行代码时,我可以单步执行每一行。
但是,当我运行迁移时,我收到一条消息
"Cannot drop the index'dbo.SalesInvoiceLines_IXSalesInvoiceLine' ,
because it does not exist or you …Run Code Online (Sandbox Code Playgroud)