小编ren*_*sen的帖子

已创建二十多个“IServiceProvider”实例供实体框架内部使用

我在 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)

entity-framework-core ef-core-2.0 ef-core-2.1 ef-core-2.2

5
推荐指数
2
解决办法
6469
查看次数

使用 JObject 创建一个对象数组的语法是什么?

我正在为 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)

c# json azure-cosmosdb

3
推荐指数
1
解决办法
4877
查看次数

处理代码优先迁移中的错误

我的 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)

entity-framework-migrations

2
推荐指数
1
解决办法
898
查看次数