Package Description
$ dotnet add package Reo.Core.AutoHistory.AbstractionsПакет Reo.Core.AutoHistory.Abstractions предоставляет абстракции для реализации отслеживания истории изменений (audit
trail) в приложениях. Он позволяет логировать операции вставки, обновления и удаления сущностей, а также управлять
аудитом изменений в коллекциях. Используется в приложениях, где требуется отслеживать изменения данных для обеспечения
целостности, анализа изменений или соблюдения требований регулирования.
Интерфейс, определяющий базовые аудит-свойства для сущностей (например, CreatedBy, ModifiedBy, Timestamp).
Интерфейс для сущностей, требующих указания внешнего идентификатора (ExternalId) для аудита.
Сервис для обработки вложенных коллекций в сущностях, позволяющий отслеживать изменения в элементах коллекций.
Интерфейс для сравнения сущностей, чтобы определить, какие поля изменились (используется в UpdateAsync).
System.Threading.Tasks (для асинхронных операций).Audit.NET (если используется реализация аудита, но не требуется для абстракций).Install-Package Reo.Core.AutoHistory.Abstractions
dotnet add package Reo.Core.AutoHistory.Abstractions
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoHistoryServices(); // Пример регистрации (реализация зависит от конкретного пакета)
}
Примечание: Для использования абстракций требуется реализация (например,
Reo.Core.AutoHistory.Implementations), которая должна быть добавлена отдельно.
IAuditBase в моделиpublic class MyEntity : IAuditBase
{
public Guid Id { get; set; }
public string Name { get; set; }
public Guid CreatedBy { get; set; }
public Guid ModifiedBy { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime ModifiedAt { get; set; }
}IInnerCollectionServicepublic class MyService
{
private readonly IInnerCollectionService _collectionService;
public MyService(IInnerCollectionService collectionService)
{
_collectionService = collectionService;
}
public void TrackCollectionChanges(List<MyEntity> entities)
{
var changes = _collectionService.GetCollectionChanges(entities);
// Обработка изменений (добавлено, удалено, изменено)
}
}IAuditComparepublic class AuditLogger
{
private readonly IAuditCompare _auditCompare;
public AuditLogger(IAuditCompare auditCompare)
{
_auditCompare = auditCompare;
}
public void LogChanges(MyEntity oldEntity, MyEntity newEntity)
{
var differences = _auditCompare.GetDifferences(oldEntity, newEntity);
foreach (var diff in differences)
{
Console.WriteLine($"Изменено поле: {diff.PropertyName}, Старое значение: {diff.OldValue}, Новое значение: {diff.NewValue}");
}
}
}Этот пакет распространяется под лицензией MIT License. См. файл LICENSE для деталей.