From 8a9ba18b48c97d057f385b343efe7b16d0ad1a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 10 Dec 2016 18:30:42 +0300 Subject: [PATCH] Added repository base classes. --- .../Abp/Domain/Repositories/IRepository.cs | 3 +- .../Repositories/QueryableRepositoryBase.cs | 44 +++++++++++ .../Abp/Domain/Repositories/RepositoryBase.cs | 78 +++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 src/Volo.Abp/Volo/Abp/Domain/Repositories/QueryableRepositoryBase.cs create mode 100644 src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryBase.cs diff --git a/src/Volo.Abp/Volo/Abp/Domain/Repositories/IRepository.cs b/src/Volo.Abp/Volo/Abp/Domain/Repositories/IRepository.cs index 580e1551b9..be5b00aed9 100644 --- a/src/Volo.Abp/Volo/Abp/Domain/Repositories/IRepository.cs +++ b/src/Volo.Abp/Volo/Abp/Domain/Repositories/IRepository.cs @@ -6,7 +6,8 @@ namespace Volo.Abp.Domain.Repositories { //TODO: Didn't get all members from ABP 1.x - public interface IRepository : IRepositoryMarker where TEntity : class, IEntity + public interface IRepository : IRepositoryMarker + where TEntity : class, IEntity { /// /// Used to get all entities. diff --git a/src/Volo.Abp/Volo/Abp/Domain/Repositories/QueryableRepositoryBase.cs b/src/Volo.Abp/Volo/Abp/Domain/Repositories/QueryableRepositoryBase.cs new file mode 100644 index 0000000000..f490606b49 --- /dev/null +++ b/src/Volo.Abp/Volo/Abp/Domain/Repositories/QueryableRepositoryBase.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; + +namespace Volo.Abp.Domain.Repositories +{ + public abstract class QueryableRepositoryBase : RepositoryBase, IQueryableRepository + where TEntity : class, IEntity + { + public abstract IQueryable GetAll(); + + public abstract List GetAllList(Expression> predicate); + + public virtual Task> GetAllListAsync(Expression> predicate) + { + return Task.FromResult(GetAllList(predicate)); + } + + public abstract TEntity FirstOrDefault(Expression> predicate); + + public virtual Task FirstOrDefaultAsync(Expression> predicate) + { + return Task.FromResult(FirstOrDefault(predicate)); + } + + public abstract void Delete(Expression> predicate); + + public virtual Task DeleteAsync(Expression> predicate) + { + Delete(predicate); + return Task.CompletedTask; + } + + public abstract int Count(Expression> predicate); + + public virtual Task CountAsync(Expression> predicate) + { + return Task.FromResult(Count(predicate)); + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryBase.cs b/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryBase.cs new file mode 100644 index 0000000000..1ec36046aa --- /dev/null +++ b/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryBase.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; + +namespace Volo.Abp.Domain.Repositories +{ + public abstract class RepositoryBase : IRepository + where TEntity : class, IEntity + { + public abstract List GetAllList(); + + public virtual Task> GetAllListAsync() + { + return Task.FromResult(GetAllList()); + } + + public abstract TEntity Get(TPrimaryKey id); + + public virtual Task GetAsync(TPrimaryKey id) + { + return Task.FromResult(Get(id)); + } + + public abstract TEntity FirstOrDefault(TPrimaryKey id); + + public virtual Task FirstOrDefaultAsync(TPrimaryKey id) + { + return Task.FromResult(FirstOrDefault(id)); + } + + public abstract TEntity Insert(TEntity entity); + + public virtual Task InsertAsync(TEntity entity) + { + return Task.FromResult(Insert(entity)); + } + + public virtual TPrimaryKey InsertAndGetId(TEntity entity) + { + return Insert(entity).Id; + } + + public virtual Task InsertAndGetIdAsync(TEntity entity) + { + return Task.FromResult(InsertAndGetId(entity)); + } + + public abstract TEntity Update(TEntity entity); + + public virtual Task UpdateAsync(TEntity entity) + { + return Task.FromResult(Update(entity)); + } + + public abstract void Delete(TEntity entity); + + public virtual Task DeleteAsync(TEntity entity) + { + Delete(entity); + return Task.CompletedTask; + } + + public abstract void Delete(TPrimaryKey id); + + public virtual Task DeleteAsync(TPrimaryKey id) + { + Delete(id); + return Task.CompletedTask; + } + + public abstract int Count(); + + public virtual Task CountAsync() + { + return Task.FromResult(Count()); + } + } +}