using Microsoft.Azure.Cosmos; using Microsoft.Azure.Cosmos.Fluent; using System; using System.Collections.Generic; using System.Text; namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3 { public class CosmosDBV3ClientSingleton { private static string _connectionUrl; private static string _connectionKey; private CosmosClient CosmosClient; private CosmosDBV3ClientSingleton() { } public CosmosClient GetCosmosDBClient() { if (CosmosClient != null) { return CosmosClient; } else { getInstance(_connectionUrl, _connectionKey); return CosmosClient; } } public static CosmosDBV3ClientSingleton getInstance(string connectionUrl, string connectionKey) { _connectionUrl = connectionUrl; _connectionKey = connectionKey; return SingletonInstance.instance; } private static class SingletonInstance { public static CosmosDBV3ClientSingleton instance = new CosmosDBV3ClientSingleton() { // CosmosClient =new CosmosClient(_connectionUrl, _connectionKey, new CosmosClientOptions() { AllowBulkExecution = true } ) CosmosClient = new CosmosClientBuilder(_connectionUrl, _connectionKey). WithBulkExecution(true).WithConnectionModeDirect(). //WithConnectionModeDirect(). WithCustomSerializer(new SystemTextJsonCosmosSerializer(new System.Text.Json.JsonSerializerOptions())) .Build() //CosmosClient = new CosmosClient(_connectionUrl, _connectionKey) }; //private static readonly ConnectionPolicy ConnectionPolicy = new ConnectionPolicy //{ // ConnectionMode = ConnectionMode.Direct, // ConnectionProtocol = Protocol.Tcp //}; } } }