Reo.Core.AutoHistory
8.0.447
dotnet add package Reo.Core.AutoHistory --version 8.0.447
NuGet\Install-Package Reo.Core.AutoHistory -Version 8.0.447
<PackageReference Include="Reo.Core.AutoHistory" Version="8.0.447" />
<PackageVersion Include="Reo.Core.AutoHistory" Version="8.0.447" />
<PackageReference Include="Reo.Core.AutoHistory" />
paket add Reo.Core.AutoHistory --version 8.0.447
#r "nuget: Reo.Core.AutoHistory, 8.0.447"
#:package Reo.Core.AutoHistory@8.0.447
#addin nuget:?package=Reo.Core.AutoHistory&version=8.0.447
#tool nuget:?package=Reo.Core.AutoHistory&version=8.0.447
Reo.Core.AutoHistory
Описание пакета
Пакет Reo.Core.AutoHistory предоставляет функциональность для реализации аудита изменений данных в приложениях. Он позволяет отслеживать операции вставки, обновления и удаления записей в базах данных, а также сохранять дополнительную информацию (например, идентификаторы пользователей, временные метки, названия сущностей). Поддерживается интеграция с MongoDB и PostgreSQL, что делает его универсальным решением для аудита в различных типах приложений.
Основные функции:
- Отслеживание изменений данных (CRUD-операции).
- Сохранение метаданных аудита (ID пользователя, время, имя сущности, внешние идентификаторы).
- Поддержка нескольких баз данных (MongoDB, PostgreSQL).
- Настройка через DI-контейнер и конфигурационные файлы.
Основные компоненты
1. IAuditEventExtra
Интерфейс, определяющий общие поля для событий аудита (например, UpdateDate, UpdateUserId, EntityName).
2. MongoAuditEventExtra / PostgreSqlAuditEventExtra
Классы, реализующие IAuditEventExtra для MongoDB и PostgreSQL соответственно. Добавляют специфичные поля (например,
ExternalId).
3. AuditEventExtraFactory / AuditEventExtraProvider
Сервисы для создания и управления событиями аудита. Используются для генерации объектов IAuditEventExtra на основе
данных из приложения.
4. AuditEventExtraMapper
Маппер для преобразования сущностей в объекты IAuditEventExtra, необходимый для корректного сохранения данных в базу.
5. IAuditExternalBase
Интерфейс, определяющий обязательные поля для внешних данных (например, ExternalId).
6. Исключения
- AutoHistoryDbOptionsException: Выбрасывается при ошибке настройки базы данных.
- AutoHistoryExtraFieldsMappingException: Выбрасывается при ошибке маппинга полей аудита.
Требования
Версии .NET
- .NET 6.0 и выше.
Зависимости
- Audit.NET (для аудита операций).
- Npgsql (для работы с PostgreSQL).
- MongoDB.Driver (для работы с MongoDB).
Установка
NuGet Package Manager
Install-Package Reo.Core.AutoHistory
.NET CLI
dotnet add package Reo.Core.AutoHistory
Настройка
Регистрация в DI-контейнере (ASP.NET Core)
Добавьте в Startup.cs или Program.cs:
services.AddAutoHistory(options =>
{
options.UseMongoDb(connectionString: "mongodb://localhost:27017", databaseName: "AuditDb");
// или
options.UsePostgreSql(connectionString: "Host=localhost;Database=AuditDb;Username=user;Password=pass");
});
Конфигурационные параметры
Настройки можно указать в appsettings.json:
{
"AutoHistory": {
"MongoDb": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "AuditDb"
},
"PostgreSql": {
"ConnectionString": "Host=localhost;Database=AuditDb;Username=user;Password=pass"
}
}
}
Использование
Пример 1: Аудит операции вставки
var auditEvent = new MongoAuditEventExtra
{
UpdateDate = DateTime.UtcNow,
UpdateUserId = Guid.NewGuid(),
EntityName = "User",
ExternalId = "12345"
};
await AuditEventExtraProvider.SaveAsync(auditEvent);
Пример 2: Интеграция с репозиторием
public class UserRepository
{
private readonly IAuditEventExtraProvider _auditProvider;
public UserRepository(IAuditEventExtraProvider auditProvider)
{
_auditProvider = auditProvider;
}
public async Task CreateUserAsync(User user)
{
// Логика создания пользователя
await _auditProvider.SaveAsync(new MongoAuditEventExtra
{
UpdateDate = DateTime.UtcNow,
UpdateUserId = Guid.NewGuid(),
EntityName = "User",
ExternalId = user.Id.ToString()
});
}
}
Пример 3: Обработка ошибок
try
{
await AuditEventExtraProvider.SaveAsync(auditEvent);
}
catch (AutoHistoryDbOptionsException ex)
{
// Обработка ошибки настройки базы данных
Console.WriteLine($"Ошибка конфигурации: {ex.Message}");
}
catch (AutoHistoryExtraFieldsMappingException ex)
{
// Обработка ошибки маппинга полей
Console.WriteLine($"Ошибка маппинга: {ex.Message}");
}
Лицензия
MIT License
Данный пакет распространяется под лицензией MIT. Подробнее см. в файле LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- AspNetCore.HealthChecks.MongoDb (>= 9.0.0)
- AspNetCore.HealthChecks.Redis (>= 8.0.1)
- AspNetCore.HealthChecks.UI.Client (>= 8.0.1)
- Audit.NET (>= 25.0.7)
- Audit.NET.MongoDB (>= 25.0.7)
- Audit.NET.PostgreSql (>= 25.0.7)
- AutoMapper (>= 11.0.1 && < 15.0.0)
- FluentValidation (>= 11.11.0)
- FluentValidation.AspNetCore (>= 11.3.1)
- Flurl (>= 4.0.0)
- Flurl.Http (>= 4.0.2)
- JetBrains.Annotations (>= 2024.3.0)
- LinqKit.Core (>= 1.2.8)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 8.0.18)
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.7)
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.EntityFrameworkCore (>= 9.0.7)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.7)
- Microsoft.Extensions.Caching.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Caching.Memory (>= 9.0.7)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 9.0.7)
- Microsoft.Extensions.Configuration (>= 9.0.7)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.7)
- Microsoft.Extensions.DependencyInjection (>= 9.0.7)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Http.Polly (>= 9.0.7)
- Microsoft.Extensions.Logging (>= 9.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Options (>= 9.0.7)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.7)
- MongoDB.Analyzer (>= 2.0.0)
- MongoDB.Driver (>= 3.4.0)
- NEST (>= 7.17.5)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.5.0)
- RedLock.net (>= 2.3.2)
- Reo.Core.AutoHistory.Abstractions (>= 8.0.447)
- Reo.Core.DataModels (>= 8.0.447)
- Reo.Core.Hosting (>= 8.0.447)
- Reo.Core.MongoDB (>= 8.0.447)
- stbychkov.AutoLoggerMessage (>= 1.0.11)
- Swashbuckle.AspNetCore (>= 9.0.3)
- System.Collections.Immutable (>= 9.0.7)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.IO.Abstractions (>= 22.0.15)
- System.IO.Pipelines (>= 9.0.7)
- System.Text.Encodings.Web (>= 9.0.7)
- System.Text.Json (>= 9.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.0.447 | 308 | 7/16/2025 |
| 8.0.446 | 277 | 7/16/2025 |
| 8.0.445 | 290 | 7/16/2025 |
| 8.0.444 | 274 | 7/16/2025 |
| 8.0.443 | 283 | 7/16/2025 |
| 8.0.442 | 295 | 7/16/2025 |
| 8.0.439 | 230 | 7/15/2025 |
| 8.0.438 | 286 | 7/15/2025 |
| 8.0.437 | 275 | 7/15/2025 |
| 8.0.436 | 275 | 7/15/2025 |
| 6.0.447 | 276 | 7/16/2025 |
| 6.0.446 | 261 | 7/16/2025 |
| 6.0.445 | 283 | 7/16/2025 |
| 6.0.444 | 265 | 7/16/2025 |
| 6.0.443 | 259 | 7/16/2025 |
| 6.0.442 | 264 | 7/16/2025 |
| 6.0.439 | 241 | 7/15/2025 |
| 6.0.438 | 273 | 7/15/2025 |
| 6.0.437 | 277 | 7/15/2025 |
| 6.0.436 | 285 | 7/15/2025 |