Package Description
$ dotnet add package Reo.Core.DatabaseReo.Core.Database — это абстрактный слой для работы с базами данных, предназначенный для упрощения и унификации
доступа к данным в приложениях на C#. Пакет предоставляет общий интерфейс для выполнения операций CRUD, поддерживает
инструменты для аудита изменений, а также включает реализации для работы с MongoDB и PostgreSQL. Он решает проблему
дублирования кода при работе с разными СУБД и обеспечивает централизованное управление конфигурацией и состоянием баз
данных.
Интерфейс для выполнения операций с базой данных (CRUD, фильтрация, агрегация). Предоставляет методы для работы с сущностями, включая вставку, обновление, удаление и выборку данных.
Фабрика для создания экземпляров IDataProvider<TId>. Используется для интеграции с контейнером зависимостей (DI) в
ASP.NET Core и других фреймворках.
Реализация IDataProvider<string> для работы с MongoDB. Поддерживает асинхронные операции, фильтрацию и инклюзию
связанных данных (через Include).
Реализация проверки состояния кластера PostgreSQL. Использует Npgsql для проверки доступности узлов кластера и
обеспечивает высокую отказоустойчивость.
Инструмент для автоматического обновления даты последнего изменения сущности. Может быть интегрирован в ORM-провайдеры для отслеживания изменений.
Npgsql (для PostgreSQL-проверок состояния).Microsoft.Extensions.DependencyInjection (для интеграции с DI-контейнером).Используйте следующие команды для установки пакета:
Install-Package Reo.Core.Database
или
dotnet add package Reo.Core.Database
Добавьте сервисы в Startup.cs или Program.cs:
services.AddSingleton<IDataProviderFactory, DataProviderFactory>();
services.AddSingleton<IDataProvider<string>, MongoDataProvider>();
appsettings.json или через DI-контейнер.HealthChecks через
PostgresClusterHealthCheck.public class UserService
{
private readonly IDataProvider<string> _dataProvider;
public UserService(IDataProvider<string> dataProvider)
{
_dataProvider = dataProvider;
}
public async Task<User> GetUserByIdAsync(string id)
{
return await _dataProvider.Query<User>(x => x.Id == id).FirstOrDefaultAsync();
}
public async Task CreateUserAsync(User user)
{
await _dataProvider.InsertAsync(user);
}
}public class HealthCheckService
{
private readonly IHealthCheck _healthCheck;
public HealthCheckService(IHealthCheck healthCheck)
{
_healthCheck = healthCheck;
}
public async Task CheckClusterHealthAsync()
{
var result = await _healthCheck.CheckHealthAsync(new HealthCheckContext());
if (result.Status != HealthStatus.Healthy)
{
// Обработка ошибки
}
}
}public class Product
{
public string Id { get; set; }
public string Name { get; set; }
public DateTime LastUpdated { get; set; }
}
// В конфигурации ORM:
services.AddSingleton<UpdateDateInterceptor>();Reo.Core.Database распространяется под лицензией MIT License. Вы можете свободно использовать, модифицировать и распространять этот пакет, сохраняя информацию об авторстве.