Skip to content

UnitOfWork pattern implementation for ASP.NET Core

License

Notifications You must be signed in to change notification settings

Calabonga/UnitOfWork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnitOfWork

Реализация паттерна "Unit Of Work" для EntityFrameworkCore на платформе .NET. This is a Unit ofWork pattern implementation on .NET.

Версии

5.0.0 2024-11-25

  • Released new 5.0.0 version
  • Deprecated method will remove soon. Please use new overrides with TrackingType parameter.

5.0.0-beta.2 2024-11-23

  • Добавлена поддержка фреймворка NET9.0 наряду с фреймворком NET8.0 (Added support for NET9.0 framework along with NET8.0 framework). Теперь в одном пакете поддержка двух версий.

5.0.0-beta.1 2024-11-03

  • Созданые перегрузки для всех методов, где используется параметр disableTracking с целью дополнить новым способом управления слежением за изменениями. Теперь доступно выбрать один из вариантов:

    /// <summary>
    /// Changes Tracking Type for DbSet operations
    /// </summary>
    public enum TrackingType
    {
        NoTracking,
        NoTrackingWithIdentityResolution,
        Tracking
    }

    Если вы используте сборку Calabonga.UnitOfWork впервые, то никаких действий дополнительных не потребуется. А если вы обновляете сборку на проекте, где уже был использовано Calabonga.UnitOfWork, то для использования новых методов достаточно указать явно тип слежения за изменениями. Пример кода без использования явного типа слежения:

    public async Task<IEnumerable<PictureFile>> GetFilesForPostAsync(Guid postId, CancellationToken cancellationToken)
    {
        var maps = await _unitOfWork
            .GetRepository<ImageMapLink>()
            .GetAllAsync(predicate: x => x.PostId == postId); // <= Error after update 5.0.x
    
        if (maps.Any())
        {
            return maps.ToList().Select(x => new PictureFile(x.ImageSrc, x.MappedSrc!));
        }
    
        return [];
    }

    Достаточно явно добавить тип ``

    public async Task<IEnumerable<PictureFile>> GetFilesForPostAsync(Guid postId, CancellationToken cancellationToken)
    {
        var maps = await _unitOfWork
            .GetRepository<ImageMapLink>()
            .GetAllAsync(predicate: x => x.PostId == postId, 
                trackingType: TrackingType.NoTracking); // <= Add explicit value
    
        if (maps.Any())
        {
            return maps.ToList().Select(x => new PictureFile(x.ImageSrc, x.MappedSrc!));
        }
    
        return [];
    }
  • Методы, где используется параметр disableTracking, помечены атрибутом obsolete, что означает, что в последующих версиях данные методы будут удалены.

  • Исправлены дубликаты кода, возникшие при склеивании веток (спасибо Andrey).

4.0.0 от 2024-02-25

  • Обновлена версия сборки до .NET8.
  • IPagedList<T> вынесен в свой собственный nuget-пакет Calabogna.PagedListCore.
  • Обновлена документация https://calabonga.github.io/UnitOfWork/

3.1.0 от 2023-03-25

  • Обновлены nuget-пакеты EntityFramework
  • Добавлены дополнительные параметры в методы IRepository<T> для управления AutoIncludes.
  • Обновлена документация https://calabonga.github.io/UnitOfWork/

2022-02-08

  • Сборка переведена на NET6.0. В проект был обновлен (Nullable = true)
  • Обновлены методы на предмет обработки Nullable типов
  • Удалена сборка AutoHistory по причине отсутствия поддержки ее NET6.0.

Ссылки

Автор

Author