Added includeDetails to repository Get methods.

pull/272/head
Halil İbrahim Kalkan 8 years ago
parent af8f5cbcb1
commit d682802e50

@ -46,9 +46,9 @@ namespace Volo.Abp.Domain.Repositories
public abstract class BasicRepositoryBase<TEntity, TKey> : BasicRepositoryBase<TEntity>, IBasicRepository<TEntity, TKey>
where TEntity : class, IEntity<TKey>
{
public virtual TEntity Get(TKey id)
public virtual TEntity Get(TKey id, bool includeDetails = true)
{
var entity = Find(id);
var entity = Find(id, includeDetails);
if (entity == null)
{
@ -58,16 +58,16 @@ namespace Volo.Abp.Domain.Repositories
return entity;
}
public virtual Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Get(id));
return Task.FromResult(Get(id, includeDetails));
}
public abstract TEntity Find(TKey id);
public abstract TEntity Find(TKey id, bool includeDetails = true);
public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Find(id));
return Task.FromResult(Find(id, includeDetails));
}
public virtual void Delete(TKey id, bool autoSave = false)

@ -13,34 +13,38 @@ namespace Volo.Abp.Domain.Repositories
/// Throws <see cref="EntityNotFoundException"/> if can not find an entity with given id.
/// </summary>
/// <param name="id">Primary key of the entity to get</param>
/// <param name="includeDetails">Set true to include all children of this entity</param>
/// <returns>Entity</returns>
[NotNull]
TEntity Get(TKey id);
TEntity Get(TKey id, bool includeDetails = true);
/// <summary>
/// Gets an entity with given primary key.
/// Throws <see cref="EntityNotFoundException"/> if can not find an entity with given id.
/// </summary>
/// <param name="id">Primary key of the entity to get</param>
/// <param name="includeDetails">Set true to include all children of this entity</param>
/// <param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> to observe while waiting for the task to complete.</param>
/// <returns>Entity</returns>
[NotNull]
Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default);
Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default);
/// <summary>
/// Gets an entity with given primary key or null if not found.
/// </summary>
/// <param name="id">Primary key of the entity to get</param>
/// <param name="includeDetails">Set true to include all children of this entity</param>
/// <returns>Entity or null</returns>
[CanBeNull]
TEntity Find(TKey id);
TEntity Find(TKey id, bool includeDetails = true);
/// <summary>
/// Gets an entity with given primary key or null if not found.
/// </summary>
/// <param name="id">Primary key of the entity to get</param>
/// <param name="includeDetails">Set true to include all children of this entity</param>
/// <param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> to observe while waiting for the task to complete.</param>
/// <returns>Entity or null</returns>
Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default);
Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default);
}
}

@ -40,13 +40,13 @@ namespace Volo.Abp.Domain.Repositories
{
foreach (var entity in GetQueryable().Where(predicate).ToList())
{
Delete(entity);
Delete(entity, autoSave);
}
}
public virtual Task DeleteAsync(Expression<Func<TEntity, bool>> predicate, bool autoSave = false, CancellationToken cancellationToken = default)
{
Delete(predicate);
Delete(predicate, autoSave);
return Task.CompletedTask;
}
@ -66,19 +66,26 @@ namespace Volo.Abp.Domain.Repositories
return query;
}
protected virtual IQueryable<TEntity> IncludeDetails(IQueryable<TEntity> queryable)
{
return queryable;
}
}
public abstract class RepositoryBase<TEntity, TKey> : RepositoryBase<TEntity>, IRepository<TEntity, TKey>
where TEntity : class, IEntity<TKey>
{
public virtual TEntity Find(TKey id)
public virtual TEntity Find(TKey id, bool includeDetails = true)
{
return GetQueryable().FirstOrDefault(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id));
return includeDetails
? IncludeDetails(GetQueryable()).FirstOrDefault(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id))
: GetQueryable().FirstOrDefault(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id));
}
public virtual TEntity Get(TKey id)
public virtual TEntity Get(TKey id, bool includeDetails = true)
{
var entity = Find(id);
var entity = Find(id, includeDetails);
if (entity == null)
{
@ -88,30 +95,30 @@ namespace Volo.Abp.Domain.Repositories
return entity;
}
public virtual Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Get(id));
return Task.FromResult(Get(id, includeDetails));
}
public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Find(id));
return Task.FromResult(Find(id, includeDetails));
}
public virtual void Delete(TKey id, bool autoSave = false)
{
var entity = Find(id);
var entity = Find(id, includeDetails: false);
if (entity == null)
{
return;
}
Delete(entity);
Delete(entity, autoSave);
}
public virtual Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default)
{
Delete(id);
Delete(id, autoSave);
return Task.CompletedTask;
}
}

@ -160,9 +160,9 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
}
public virtual TEntity Get(TKey id)
public virtual TEntity Get(TKey id, bool includeDetails = true)
{
var entity = Find(id);
var entity = Find(id, includeDetails);
if (entity == null)
{
@ -172,9 +172,9 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
return entity;
}
public virtual async Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public virtual async Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
var entity = await FindAsync(id, GetCancellationToken(cancellationToken));
var entity = await FindAsync(id, includeDetails, GetCancellationToken(cancellationToken));
if (entity == null)
{
@ -184,19 +184,23 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
return entity;
}
public virtual TEntity Find(TKey id)
public virtual TEntity Find(TKey id, bool includeDetails = true)
{
return DbSet.Find(id);
return includeDetails
? IncludeDetails(DbSet).FirstOrDefault(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id))
: DbSet.Find(id);
}
public virtual async Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public virtual async Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return await DbSet.FindAsync(new object[] { id }, GetCancellationToken(cancellationToken));
return includeDetails
? await IncludeDetails(DbSet).FirstOrDefaultAsync(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id), GetCancellationToken(cancellationToken))
: await DbSet.FindAsync(new object[] { id }, GetCancellationToken(cancellationToken));
}
public virtual void Delete(TKey id, bool autoSave = false)
{
var entity = Find(id);
var entity = Find(id, includeDetails: false);
if (entity == null)
{
return;
@ -207,7 +211,7 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
public virtual async Task DeleteAsync(TKey id, bool autoSave = false, CancellationToken cancellationToken = default)
{
var entity = await FindAsync(id, cancellationToken);
var entity = await FindAsync(id, includeDetails: false, cancellationToken: cancellationToken);
if (entity == null)
{
return;

@ -73,14 +73,14 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
}
}
public virtual TEntity Find(TKey id)
public virtual TEntity Find(TKey id, bool includeDetails = true)
{
return GetQueryable().FirstOrDefault(EntityHelper.CreateEqualityExpressionForId<TEntity, TKey>(id));
}
public virtual TEntity Get(TKey id)
public virtual TEntity Get(TKey id, bool includeDetails = true)
{
var entity = Find(id);
var entity = Find(id, includeDetails);
if (entity == null)
{
@ -90,14 +90,14 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
return entity;
}
public virtual Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Get(id));
return Task.FromResult(Get(id, includeDetails));
}
public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public virtual Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return Task.FromResult(Find(id));
return Task.FromResult(Find(id, includeDetails));
}
public virtual void Delete(TKey id, bool autoSave = false)

@ -99,9 +99,9 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
}
public virtual TEntity Get(TKey id)
public virtual TEntity Get(TKey id, bool includeDetails = true)
{
var entity = Find(id);
var entity = Find(id, includeDetails);
if (entity == null)
{
@ -111,9 +111,9 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
return entity;
}
public virtual async Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public virtual async Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
var entity = await FindAsync(id, cancellationToken);
var entity = await FindAsync(id, includeDetails, cancellationToken);
if (entity == null)
{
@ -123,12 +123,12 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
return entity;
}
public virtual async Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public virtual async Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
return await Collection.Find(CreateEntityFilter(id, true)).FirstOrDefaultAsync(cancellationToken);
}
public virtual TEntity Find(TKey id)
public virtual TEntity Find(TKey id, bool includeDetails = true)
{
return Collection.Find(CreateEntityFilter(id, true)).FirstOrDefault();
}

@ -259,22 +259,22 @@ namespace Volo.Abp.Domain.Repositories
public class MyTestDefaultRepository<TEntity, TKey> : MyTestDefaultRepository<TEntity>, IRepository<TEntity, TKey>
where TEntity : class, IEntity<TKey>
{
public TEntity Get(TKey id)
public TEntity Get(TKey id, bool includeDetails = true)
{
throw new NotImplementedException();
}
public Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default)
public Task<TEntity> GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
public TEntity Find(TKey id)
public TEntity Find(TKey id, bool includeDetails = true)
{
throw new NotImplementedException();
}
public Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default)
public Task<TEntity> FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}

Loading…
Cancel
Save