C# Azure CosmosDB的实体框架核心被反复初始化

C# Azure CosmosDB的实体框架核心被反复初始化,c#,asp.net-core,entity-framework-core,azure-cosmosdb,C#,Asp.net Core,Entity Framework Core,Azure Cosmosdb,我正在使用Azure Cosmos DB(SQL API)创建一个REST API,作为我的实体框架核心数据库。在配置服务时,我会添加DbContext作为依赖项,如下所示: services.AddDbContext<MyContext>( options => options.UseCosmos(CosmosDbEndpoint, CosmosDbAuthKey, CosmosDbName, cosmosOptions

我正在使用Azure Cosmos DB(SQL API)创建一个REST API,作为我的实体框架核心数据库。在配置服务时,我会添加DbContext作为依赖项,如下所示:

            services.AddDbContext<MyContext>(
                options => options.UseCosmos(CosmosDbEndpoint, CosmosDbAuthKey, CosmosDbName, cosmosOptionsAction => cosmosOptionsAction.ConnectionMode(ConnectionMode.Direct)));

此解决方案为我解决了错误429问题

services.AddDbContext<PharmacyExpressContext>(
   options => options.UseCosmos(
       CosmosDbEndpoint, 
       CosmosDbAuthKey, 
       CosmosDbName,  
       cosmosCLientOptions =>  
           new CosmosClientOptions  
           { 
              IdleTcpConnectionTimeout = new System.TimeSpan(1, 0, 0 , 0)
           }));
services.AddDbContext(
选项=>options.useComos(
宇宙本德点,
CosmosDbAuthKey,
宇宙名字,
cosmosCLientOptions=>
新CosmosClientOptions
{ 
IdleTcpConnectionTimeout=新系统.TimeSpan(1,0,0,0)
}));
我仍然在日志中初始化了
Entity Framework Core 3.1.7
,但API调用的响应速度明显加快,并且不再出现过多请求错误


关于进一步改进性能的详细信息记录在

添加
选项中来处理CosmosDB中的429个请求。让我知道这是否有效。谢谢你。。。让我试试这个。你能检查一下数据库是否已经创建了吗?如果已创建,请删除
数据库。EnsureCreated()
,因为它将尝试检查数据库并根据每个不推荐的请求创建模型,这将产生性能问题。@HarshitaSingh MSFT它不起作用。请参阅。我们可以通过在
CosmoClientOptions
实例上设置
RetryOptions
来修改默认重试次数。
 var storage = new CosmosDbPartitionedStorage(
                new CosmosDbPartitionedStorageOptions
                {
                    CosmosDbEndpoint = CosmosDbEndpoint, 
                    AuthKey = CosmosDbAuthKey, 
                    DatabaseId = CosmosDbName, 
                    ContainerId = CosmosContainerId, 
                    CompatibilityMode = false, 
                });


            var conversationState = new ConversationState(storage);
            services.AddSingleton(conversationState);

            var userState = new UserState(storage);
            services.AddSingleton(userState);
services.AddDbContext<PharmacyExpressContext>(
   options => options.UseCosmos(
       CosmosDbEndpoint, 
       CosmosDbAuthKey, 
       CosmosDbName,  
       cosmosCLientOptions =>  
           new CosmosClientOptions  
           { 
              IdleTcpConnectionTimeout = new System.TimeSpan(1, 0, 0 , 0)
           }));