Я пытаюсь написать общие классы cosmos Db, которые будут полезны, когда существует множество коллекций с помощью Cosmonaut, оболочки CosmosDb. Вот пример класса Factory
public class CosmosDbClientFactory: ICosmosDbClientFactory
{
private readonly string _databaseName;
private readonly string _endpointUrl;
private readonly string _masterKey;
public CosmosDbClientFactory(string databaseName, string endpointUrl, string masterKey)
{
_databaseName = databaseName ?? throw new ArgumentNullException(nameof(databaseName));
_endpointUrl = endpointUrl ?? throw new ArgumentNullException(nameof(endpointUrl));
_masterKey = masterKey ?? throw new ArgumentNullException(nameof(masterKey));
}
public CosmosStoreSettings GetCosmosStoreSettings()
{
var cosmosStoreSettings = new CosmosStoreSettings(
databaseName: _databaseName,
endpointUrl: _endpointUrl,
authKey: _masterKey );
return cosmosStoreSettings;
}
И у меня есть класс репозитория
public abstract class CosmosDbRepository<T> where T: Entity
{
private readonly ICosmosDbClientFactory _cosmosDbClientFactory;
protected CosmosDbRepository(ICosmosDbClientFactory cosmosDbClientFactory)
{
_cosmosDbClientFactory = cosmosDbClientFactory;
}
public Task<string> AddAsync(T entity)
{
try
{
entity.Id = GenerateId(entity);
ICosmosStore<T> cosmosStore = new CosmosStore<T>(_cosmosDbClientFactory.GetCosmosStoreSettings());
var response = cosmosStore.AddAsync(entity);
return Task.FromResult(entity.Id);
}
catch (Exception e)
{
Debug.WriteLine("Failed to save data into CosmosDb");
throw;
}
}
}
, когда я пытаюсь использовать этот репозиторий, я получаю ошибку ниже
"Входные данные не являются допустимой строкой Base-64, поскольку они содержат неосновной 64-символ, более двух символов заполнения или недопустимый символ среди символов заполнения."
из строки
ICosmosStore<T> cosmosStore = new CosmosStore<T>(_cosmosDbClientFactory.GetCosmosStoreSettings());
Интересно, кто-нибудь может мне помочь выяснить причину?