@@ -25,7 +25,7 @@ public ReadableRepository(TContext dbContext) : base(dbContext) { }
25
25
protected virtual IQueryable < T > ApplyIncludes ( IQueryable < T > query ) => query . IncludeEverything ( ) ;
26
26
protected virtual IQueryable < T > Queryable => ApplyIncludes ( Set . AsNoTracking ( ) ) ;
27
27
28
- public Task < IReadOnlyCollection < T > > GetAll ( CancellationToken cancellationToken = default ( CancellationToken ) ) => Set . ToListAsync ( cancellationToken ) . ToReadOnlyCollection ( ) ;
28
+ public Task < IReadOnlyCollection < T > > GetAll ( CancellationToken cancellationToken = default ( CancellationToken ) ) => Set . AsNoTracking ( ) . ToListAsync ( cancellationToken ) . ToReadOnlyCollection ( ) ;
29
29
30
30
public Task < T > GetById ( TId id , CancellationToken cancellationToken = default ( CancellationToken ) )
31
31
{
@@ -38,18 +38,25 @@ public ReadableRepository(TContext dbContext) : base(dbContext) { }
38
38
return Queryable . FirstOrDefaultAsync ( eLambda , cancellationToken ) ;
39
39
}
40
40
41
+ private Task < IReadOnlyCollection < T > > ExecuteQueryOnQueryable ( Expression < Func < T , bool > > query , IQueryable < T > queryable , CancellationToken cancellationToken )
42
+ => queryable . Where ( query ) . ToReadOnlyCollectionAsync ( cancellationToken ) ;
43
+
41
44
public Task < IReadOnlyCollection < T > > Query ( Expression < Func < T , bool > > query , CancellationToken cancellationToken = default ( CancellationToken ) )
42
- => Set . Where ( query ) . ToReadOnlyCollectionAsync ( cancellationToken ) ;
45
+ => ExecuteQueryOnQueryable ( query , Set . AsNoTracking ( ) , cancellationToken ) ;
43
46
44
47
public Task < IReadOnlyCollection < T > > Query ( IQuery < T > query , CancellationToken cancellationToken = default ( CancellationToken ) )
45
48
=> Query ( query . AsExpression ( ) , cancellationToken ) ;
46
49
50
+ public Task < IReadOnlyCollection < T > > QueryWithChildren ( Expression < Func < T , bool > > query , CancellationToken cancellationToken = default ( CancellationToken ) )
51
+ => ExecuteQueryOnQueryable ( query , Queryable , cancellationToken ) ;
52
+
53
+ public Task < IReadOnlyCollection < T > > QueryWithChildren ( IQuery < T > query , CancellationToken cancellationToken = default ( CancellationToken ) )
54
+ => QueryWithChildren ( query . AsExpression ( ) , cancellationToken ) ;
55
+
47
56
public Task < T > FirstOrDefault ( Expression < Func < T , bool > > query , CancellationToken cancellationToken = default ( CancellationToken ) )
48
57
=> Queryable . FirstOrDefaultAsync ( query , cancellationToken ) ;
49
58
50
59
public Task < T > FirstOrDefault ( IQuery < T > query , CancellationToken cancellationToken = default ( CancellationToken ) )
51
60
=> FirstOrDefault ( query . AsExpression ( ) , cancellationToken ) ;
52
-
53
-
54
61
}
55
62
}
0 commit comments