C# Azure CosmosDB的实体框架核心被反复初始化
我正在使用Azure Cosmos DB(SQL API)创建一个REST API,作为我的实体框架核心数据库。在配置服务时,我会添加DbContext作为依赖项,如下所示: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
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调用的响应速度明显加快,并且不再出现过多请求错误
关于进一步改进性能的详细信息记录在添加
选项中在OnConfiguring()中的code>来处理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)
}));