Реализация паттерна "Unit Of Work" для EntityFrameworkCore на платформе .NET. This is a Unit ofWork pattern implementation on .NET.
- Released new
5.0.0
version - Deprecated method will remove soon. Please use new overrides with
TrackingType
parameter.
- Добавлена поддержка фреймворка NET9.0 наряду с фреймворком NET8.0 (Added support for NET9.0 framework along with NET8.0 framework). Теперь в одном пакете поддержка двух версий.
-
Созданые перегрузки для всех методов, где используется параметр
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).
- Обновлена версия сборки до .NET8.
IPagedList<T>
вынесен в свой собственный nuget-пакетCalabogna.PagedListCore
.- Обновлена документация https://calabonga.github.io/UnitOfWork/
- Обновлены nuget-пакеты EntityFramework
- Добавлены дополнительные параметры в методы
IRepository<T>
для управленияAutoIncludes
. - Обновлена документация https://calabonga.github.io/UnitOfWork/
- Сборка переведена на NET6.0. В проект был обновлен (Nullable = true)
- Обновлены методы на предмет обработки Nullable типов
- Удалена сборка AutoHistory по причине отсутствия поддержки ее NET6.0.
- EntityFramework Core и паттерны "Unit of Work" и "Repository" (ru)
- Документация API
- Блог по программированию
- Boosty.To
- Пишите комментарии к видео на сайте www.calabonga.net