|
1 | 1 |
|
2 | 2 | # UnitOfWork |
3 | | -Реализация паттерна "Unit Of Work" для платформы ASP.NET Core. |
| 3 | +Реализация паттерна "Unit Of Work" для EntityFrameworkCore на платформе .NET |
4 | 4 |
|
5 | 5 | # Версии |
6 | 6 |
|
| 7 | +### 5.0.0-beta.1 2024-11-03 |
| 8 | + |
| 9 | +* Созданые перегрузки для всех методов, где используется параметр `disableTracking` с целью дополнить новым способом управления слежением за изменениями. Теперь доступно выбрать один из вариантов: |
| 10 | + ``` csharp |
| 11 | + /// <summary> |
| 12 | + /// Changes Tracking Type for DbSet operations |
| 13 | + /// </summary> |
| 14 | + public enum TrackingType |
| 15 | + { |
| 16 | + NoTracking, |
| 17 | + NoTrackingWithIdentityResolution, |
| 18 | + Tracking |
| 19 | + } |
| 20 | + ``` |
| 21 | + Если вы используте сборку `Calabonga.UnitOfWork` впервые, то никаких действий дополнительных не потребуется. А если вы обновляете сборку на проекте, где уже был использовано `Calabonga.UnitOfWork`, то для использования новых методов достаточно указать явно тип слежения за изменениями. Пример кода без использования явного типа слежения: |
| 22 | + ``` csharp |
| 23 | + public async Task<IEnumerable<PictureFile>> GetFilesForPostAsync(Guid postId, CancellationToken cancellationToken) |
| 24 | + { |
| 25 | + var maps = await _unitOfWork |
| 26 | + .GetRepository<ImageMapLink>() |
| 27 | + .GetAllAsync(predicate: x => x.PostId == postId); // <= Error after update 5.0.x |
| 28 | +
|
| 29 | + if (maps.Any()) |
| 30 | + { |
| 31 | + return maps.ToList().Select(x => new PictureFile(x.ImageSrc, x.MappedSrc!)); |
| 32 | + } |
| 33 | + |
| 34 | + return []; |
| 35 | + } |
| 36 | + ``` |
| 37 | + Достаточно явно добавить тип `` |
| 38 | + ``` csharp |
| 39 | + public async Task<IEnumerable<PictureFile>> GetFilesForPostAsync(Guid postId, CancellationToken cancellationToken) |
| 40 | + { |
| 41 | + var maps = await _unitOfWork |
| 42 | + .GetRepository<ImageMapLink>() |
| 43 | + .GetAllAsync(predicate: x => x.PostId == postId, |
| 44 | + trackingType: TrackingType.NoTracking); // <= Add explicit value |
| 45 | +
|
| 46 | + if (maps.Any()) |
| 47 | + { |
| 48 | + return maps.ToList().Select(x => new PictureFile(x.ImageSrc, x.MappedSrc!)); |
| 49 | + } |
| 50 | + |
| 51 | + return []; |
| 52 | + } |
| 53 | + ``` |
| 54 | + |
| 55 | +* Методы, где используется параметр `disableTracking`, помечены атрибутом `obsolete`, что означает, что в последующих версиях данные методы будут удалены. |
| 56 | +* Исправлены дубликаты кода, возникшие при склеивании веток (спасибо Andrey). |
| 57 | + |
| 58 | + |
7 | 59 | ### 4.0.0 от 2024-02-25 |
8 | 60 |
|
9 | 61 | * Обновлена версия сборки до .NET8. |
|
0 commit comments