Open maximecaron opened 2 years ago
Since it's an async method adding new API would be non-trivial and therefore we first need to see whether there is more interest in this.
As a workaround you can run a small query instead of context.DataBase.GetCosmosclient().OpenAsync();
@AndriySvyryd One suggestion would be to change SingletonCosmosClientWrapper.cs to
public virtual Task<CosmosClient> Client
=> _client ??= string.IsNullOrEmpty(_connectionString)
? CosmosClient.CreateAndInitializeAsync(_endpoint, _key, _options)
: CosmosClient.CreateAndInitializeAsync(_connectionString, _options);
File a bug
In Microsoft.Azure.Cosmos v3.27.0 to initialize cosmosdb the only way is now to call CosmosClient.CreateAndInitializeAsync(); With CosmosSDK 2.0 it was possible to call OpenAsync to avoid startup latency on first request Ex:
But this method have been removed and it's no possible anymore to Initialize CosmosDB client after it have been created. The problem we are having with Entity Framework Core is that Entity Framework is creating the CosmosClient instance at
https://github.com/dotnet/efcore/blob/70cd92974e09e938a92384e91b5c3179f4773725/src/EFCore.Cosmos/Storage/Internal/SingletonCosmosClientWrapper.cs#L103
And is not calling CreateAndInitializeAsync()
This is causing first request to take 2 seconds instead of 20 ms