Browse Source

Added WithDetails to repository that getting a list of selectors.

pull/272/head
Halil İbrahim Kalkan 8 years ago
parent
commit
e3bc2f6031
  1. 8
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyRepository.cs
  2. 5
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs
  3. 15
      src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
  4. 11
      test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/Repository_Queryable_Tests.cs

8
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyRepository.cs

@ -1,11 +1,15 @@
using System.Linq;
using System;
using System.Linq;
using System.Linq.Expressions;
using Volo.Abp.Domain.Entities;
namespace Volo.Abp.Domain.Repositories
{
public interface IReadOnlyRepository<out TEntity> : IQueryable<TEntity>
public interface IReadOnlyRepository<TEntity> : IQueryable<TEntity>
{
IQueryable<TEntity> WithDetails();
IQueryable<TEntity> WithDetails(params Expression<Func<TEntity, object>>[] propertySelectors);
}
public interface IReadOnlyRepository<TEntity, TKey> : IReadOnlyRepository<TEntity>, IReadOnlyBasicRepository<TEntity, TKey>

5
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs

@ -29,6 +29,11 @@ namespace Volo.Abp.Domain.Repositories
return GetQueryable();
}
public virtual IQueryable<TEntity> WithDetails(params Expression<Func<TEntity, object>>[] propertySelectors)
{
return GetQueryable();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();

15
src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs

@ -168,6 +168,21 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
return EntityOptions.DefaultWithDetailsFunc(GetQueryable());
}
public override IQueryable<TEntity> WithDetails(params Expression<Func<TEntity, object>>[] propertySelectors)
{
var query = GetQueryable();
if (!propertySelectors.IsNullOrEmpty())
{
foreach (var propertySelector in propertySelectors)
{
query = query.Include(propertySelector);
}
}
return query;
}
}
public class EfCoreRepository<TDbContext, TEntity, TKey> : EfCoreRepository<TDbContext, TEntity>,

11
test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/Repository_Queryable_Tests.cs

@ -48,5 +48,16 @@ namespace Volo.Abp.TestApp.Testing
person.Phones.Count.ShouldBe(2);
});
}
[Fact]
public void WithDetails_Explicit()
{
WithUnitOfWork(() =>
{
var person = PersonRepository.WithDetails(p => p.Phones).Single(p => p.Id == TestDataBuilder.UserDouglasId);
person.Name.ShouldBe("Douglas");
person.Phones.Count.ShouldBe(2);
});
}
}
}

Loading…
Cancel
Save