diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs index 29f37267042..4f2ce6b4347 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs @@ -15,7 +15,7 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore { - public class EfCoreRepository : RepositoryBase, IEfCoreRepository + public class EfCoreRepository : RepositoryBase, IEfCoreRepository, IAsyncEnumerable where TDbContext : IEfCoreDbContext where TEntity : class, IEntity { @@ -195,6 +195,11 @@ public override IQueryable WithDetails(params Expression GetAsyncEnumerator(CancellationToken cancellationToken = default) + { + return DbSet.AsAsyncEnumerable().GetAsyncEnumerator(cancellationToken); + } + protected virtual void CheckAndSetId(TEntity entity) { if (entity is IEntity entityWithGuidId) diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/Repository_Basic_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/Repository_Basic_Tests.cs index bfa6b8532d7..3d5d7b656b9 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/Repository_Basic_Tests.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Repositories/Repository_Basic_Tests.cs @@ -1,9 +1,31 @@ -using Volo.Abp.TestApp.Testing; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Shouldly; +using Volo.Abp.TestApp.Testing; +using Xunit; namespace Volo.Abp.EntityFrameworkCore.Repositories { public class Repository_Basic_Tests : Repository_Basic_Tests { + [Fact] + public async Task EFCore_QueryableExtension_ToListAsync() + { + await WithUnitOfWorkAsync(async () => + { + var persons = await PersonRepository.ToListAsync(); + persons.Count.ShouldBeGreaterThan(0); + }); + } + [Fact] + public async Task EFCore_QueryableExtension_CountAsync() + { + await WithUnitOfWorkAsync(async () => + { + var count = await PersonRepository.CountAsync(); + count.ShouldBeGreaterThan(0); + }); + } } }