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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Reo.Core.AutoHistory" Version="8.0.447" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.AutoHistory" Version="8.0.447" />
                    
Directory.Packages.props
<PackageReference Include="Reo.Core.AutoHistory" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reo.Core.AutoHistory --version 8.0.447
                    
#r "nuget: Reo.Core.AutoHistory, 8.0.447"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Reo.Core.AutoHistory@8.0.447
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reo.Core.AutoHistory&version=8.0.447
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.AutoHistory&version=8.0.447
                    
Install as a Cake Tool

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 и выше.

Зависимости


Установка

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed