From 85e7589f8710940342ee9e19cb56fa5c1456efda Mon Sep 17 00:00:00 2001 From: adimiko Date: Tue, 8 Apr 2025 17:46:59 +0200 Subject: [PATCH 1/2] Added get with predicate --- .../EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs | 2 ++ .../Internals/Repositories/WriteGenericRepository.cs | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs b/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs index 90bb6e7..76d3e64 100644 --- a/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs +++ b/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs @@ -11,6 +11,8 @@ public interface IWriteGenericRepository Task Get(Guid id); + Task> Get(Expression> predicate); + Task Remove(TAggregateRoot aggregateRoot); Task Remove(IEnumerable aggregateRoots); diff --git a/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs b/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs index 079424a..692380c 100644 --- a/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs +++ b/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs @@ -48,6 +48,11 @@ public Task Count(Expression> predicate) return _aggregateRoots.FindAsync(id).AsTask(); } + public async Task> Get(Expression> predicate) + { + return await _aggregateRoots.Where(predicate).ToListAsync(); + } + public Task Remove(TAggregateRoot aggregateRoot) { _aggregateRoots.Remove(aggregateRoot); From 0f76de3dabe7d373d3dca489ef661eac268310db Mon Sep 17 00:00:00 2001 From: adimiko Date: Tue, 8 Apr 2025 17:48:03 +0200 Subject: [PATCH 2/2] Refactored repository --- .../Databases/SampleAggragateRootRepository.cs | 4 ++-- source/EasyWay.EntityFrameworkCore/Extnsions.cs | 2 +- .../{IWriteGenericRepository.cs => IGenericRepository.cs} | 2 +- .../{WriteGenericRepository.cs => GenericRepository.cs} | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) rename source/EasyWay.EntityFrameworkCore/{IWriteGenericRepository.cs => IGenericRepository.cs} (91%) rename source/EasyWay.EntityFrameworkCore/Internals/Repositories/{WriteGenericRepository.cs => GenericRepository.cs} (91%) diff --git a/samples/EasyWay.Samples/Databases/SampleAggragateRootRepository.cs b/samples/EasyWay.Samples/Databases/SampleAggragateRootRepository.cs index 27c0cd6..a934211 100644 --- a/samples/EasyWay.Samples/Databases/SampleAggragateRootRepository.cs +++ b/samples/EasyWay.Samples/Databases/SampleAggragateRootRepository.cs @@ -4,9 +4,9 @@ namespace EasyWay.Samples.Databases { public class SampleAggragateRootRepository : ISampleAggragateRootRepository, IAsyncDisposable { - private readonly IWriteGenericRepository _repository; + private readonly IGenericRepository _repository; - public SampleAggragateRootRepository(IWriteGenericRepository repository) + public SampleAggragateRootRepository(IGenericRepository repository) { _repository = repository; } diff --git a/source/EasyWay.EntityFrameworkCore/Extnsions.cs b/source/EasyWay.EntityFrameworkCore/Extnsions.cs index 968f8da..17bbd3f 100644 --- a/source/EasyWay.EntityFrameworkCore/Extnsions.cs +++ b/source/EasyWay.EntityFrameworkCore/Extnsions.cs @@ -21,7 +21,7 @@ public static void AddEntityFrameworkCore( services.AddScoped(); services.AddTransient(); - services.AddScoped(typeof(IWriteGenericRepository<>), typeof(WriteGenericRepository<>)); + services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>)); services.AddTransactions(); } diff --git a/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs b/source/EasyWay.EntityFrameworkCore/IGenericRepository.cs similarity index 91% rename from source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs rename to source/EasyWay.EntityFrameworkCore/IGenericRepository.cs index 76d3e64..4d66d85 100644 --- a/source/EasyWay.EntityFrameworkCore/IWriteGenericRepository.cs +++ b/source/EasyWay.EntityFrameworkCore/IGenericRepository.cs @@ -2,7 +2,7 @@ namespace EasyWay { - public interface IWriteGenericRepository + public interface IGenericRepository where TAggregateRoot : AggregateRoot { Task Add(TAggregateRoot aggregateRoot); diff --git a/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs b/source/EasyWay.EntityFrameworkCore/Internals/Repositories/GenericRepository.cs similarity index 91% rename from source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs rename to source/EasyWay.EntityFrameworkCore/Internals/Repositories/GenericRepository.cs index 692380c..585b0a8 100644 --- a/source/EasyWay.EntityFrameworkCore/Internals/Repositories/WriteGenericRepository.cs +++ b/source/EasyWay.EntityFrameworkCore/Internals/Repositories/GenericRepository.cs @@ -3,12 +3,12 @@ namespace EasyWay.Internals.Repositories { - internal sealed class WriteGenericRepository : IWriteGenericRepository + internal sealed class GenericRepository : IGenericRepository where TAggregateRoot : AggregateRoot { private readonly DbSet _aggregateRoots; - public WriteGenericRepository(DbContext dbContext) + public GenericRepository(DbContext dbContext) { _aggregateRoots = dbContext.Set(); }