Skip to content

Commit a9dfa0f

Browse files
authored
Merge pull request #16 from codepb/ReadonlyCollection
changes to return an actual readonly collection from repository
2 parents 6f4b800 + 6cc1e3b commit a9dfa0f

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/DDDToolkit.Repository.Sql/ReadableRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public ReadableRepository(TContext dbContext) : base(dbContext) { }
2323
protected virtual IQueryable<T> ApplyIncludes(IQueryable<T> query) => query.IncludeEverything();
2424
protected virtual IQueryable<T> Queryable => ApplyIncludes(Set.AsNoTracking());
2525

26-
public Task<IReadOnlyCollection<T>> GetAll() => Set.ToListAsync().ConvertTask().To<IReadOnlyCollection<T>>();
26+
public Task<IReadOnlyCollection<T>> GetAll() => Set.ToListAsync().ToReadOnlyCollection();
2727

2828
public Task<T> GetById(TId id)
2929
{
@@ -38,7 +38,7 @@ public Task<T> GetById(TId id)
3838

3939
public Task<IReadOnlyCollection<T>> Query(Expression<Func<T, bool>> query)
4040
{
41-
return Set.Where(query).ToListAsync().ConvertTask().To<IReadOnlyCollection<T>>();
41+
return Set.Where(query).ToListAsync().ToReadOnlyCollection();
4242
}
4343
}
4444
}

src/DDDToolkit.Utilities/Extensions/TaskExtensions.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ namespace DDDToolkit.Utilities.Extensions
66
{
77
public static class TaskExtensions
88
{
9+
public static Task<IReadOnlyCollection<T>> ToReadOnlyCollection<T>(this Task<List<T>> task)
10+
=> task.ContinueWith(t => t.Result.AsReadOnly()).ConvertTask().ToTaskOf<IReadOnlyCollection<T>>();
11+
912
public static TaskConverter<T> ConvertTask<T>(this Task<T> task)
1013
{
1114
return new TaskConverter<T>(task);
@@ -20,7 +23,7 @@ public TaskConverter(Task<T> task)
2023
_task = task;
2124
}
2225

23-
public Task<TResult> To<TResult>()
26+
public Task<TResult> ToTaskOf<TResult>()
2427
where TResult : class
2528
{
2629
if (!typeof(TResult).IsAssignableFrom(typeof(T)))
@@ -29,6 +32,10 @@ public Task<TResult> To<TResult>()
2932
}
3033
return _task.ContinueWith(t => t.Result as TResult);
3134
}
35+
36+
public Task<TResult> To<TResult>()
37+
where TResult : class
38+
=> ToTaskOf<TResult>();
3239
}
3340

3441
}

0 commit comments

Comments
 (0)