last ...
This commit is contained in:
+246
-153
@@ -2,18 +2,23 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore.Query;
|
||||
using xModels.Base;
|
||||
using xModels.Dtos;
|
||||
|
||||
namespace xDataService.Interfaces {
|
||||
namespace xDataService.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// a Base Repository Interface for Manipulate
|
||||
/// an Entity in DataBase
|
||||
/// Base Repository Pattern Contracts in XDashboard's Data Service ...
|
||||
/// use for Data Manipulation ...
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
public interface IXBaseRepository<T, TKey> : IDisposable
|
||||
where T : XBaseEntity<TKey> {
|
||||
where T : XBaseEntity<TKey>
|
||||
{
|
||||
//
|
||||
#region Add ...
|
||||
/// <summary>
|
||||
@@ -21,10 +26,12 @@ namespace xDataService.Interfaces {
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> AddAsync (
|
||||
Task<T> AddAsync(
|
||||
T item,
|
||||
bool saveChanges = true
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -32,10 +39,12 @@ namespace xDataService.Interfaces {
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> AddOrUpdateAsync (
|
||||
Task<T> AddOrUpdateAsync(
|
||||
T item,
|
||||
bool saveChanges = true
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -43,135 +52,12 @@ namespace xDataService.Interfaces {
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task AddRangeAsync (
|
||||
Task AddRangeAsync(
|
||||
IEnumerable<T> items,
|
||||
bool saveChanges = true
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Remove ...
|
||||
/// <summary>
|
||||
/// remove an Entity by it's Id ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> RemoveAsync (
|
||||
TKey id,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// remove an Entity ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> RemoveAsync (
|
||||
T item,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// remove a range of exists Entities ...
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <returns></returns>
|
||||
Task RemoveRangeAsync (
|
||||
IEnumerable<T> items,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Retrieve ...
|
||||
/// <summary>
|
||||
/// retrieve whole items as queryable ...
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IQueryable<T> AsQueryable ();
|
||||
|
||||
/// <summary>
|
||||
/// retrieve an Entity by it's Id ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="containsDetail"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> GetAsync (
|
||||
TKey id,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
bool containsDetail = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve all exists Entities ...
|
||||
/// </summary>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="containsDetail"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<T>> GetAllAsync (
|
||||
bool ignoreSoftDeleteds = true,
|
||||
bool containsDetail = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// find an Entity by providing a Conditional Expression ...
|
||||
/// </summary>
|
||||
/// <param name="whereClause"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="containsDetail"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> FindOneAsync (
|
||||
Expression<Func<T, bool>> whereClause,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
bool containsDetail = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// find a collection of Entities by proving a Conditional Expression ...
|
||||
/// </summary>
|
||||
/// <param name="whereClause"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="containsDetail"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<T>> FindManyAsync (
|
||||
Expression<Func<T, bool>> whereClause,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
bool containsDetail = false
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve Entities based on XQuery Pagination structure ...
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <returns></returns>
|
||||
Task<XQueryResult<T>> QueryAsync (
|
||||
XQuery query,
|
||||
bool ignoreSoftDeleteds = true
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve Entities based on XQuery Pagination structure by providing a Conditional Expression ...
|
||||
/// </summary>
|
||||
/// <param name="whereClause"></param>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <returns></returns>
|
||||
Task<XQueryResult<T>> ConditionalQueryAsync (
|
||||
Expression<Func<T, bool>> whereClause,
|
||||
XQuery query,
|
||||
bool ignoreSoftDeleteds = true
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
@@ -183,11 +69,13 @@ namespace xDataService.Interfaces {
|
||||
/// <param name="id"></param>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> UpdateAsync (
|
||||
Task<T> UpdateAsync(
|
||||
TKey id,
|
||||
T item,
|
||||
bool saveChanges = true
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
@@ -195,10 +83,60 @@ namespace xDataService.Interfaces {
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> UpdateRangeAsync (
|
||||
Task<bool> UpdateRangeAsync(
|
||||
IEnumerable<T> items,
|
||||
bool saveChanges = true
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Remove ...
|
||||
/// <summary>
|
||||
/// remove an Entity by it's Id ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> RemoveAsync(
|
||||
TKey id,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// remove an Entity ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> RemoveAsync(
|
||||
T item,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// remove a range of exists Entities ...
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
/// <param name="softDelete"></param>
|
||||
/// <param name="saveChanges"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task RemoveRangeAsync(
|
||||
IEnumerable<T> items,
|
||||
bool softDelete = true,
|
||||
bool saveChanges = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
@@ -208,18 +146,139 @@ namespace xDataService.Interfaces {
|
||||
/// count all exists Entities ...
|
||||
/// </summary>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> CountAsync (bool ignoreSoftDeleteds = true);
|
||||
Task<int> CountAsync(
|
||||
bool ignoreSoftDeleteds = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// count all exists Entities Pages by providing page size ...
|
||||
/// </summary>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <param name="totalItems"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> PagesCountAsync (
|
||||
Task<int> PagesCountAsync(
|
||||
int pageSize,
|
||||
int? totalItems = null
|
||||
int? totalItems = null,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Retrieve ...
|
||||
/// <summary>
|
||||
/// retrieve whole items as queryable ...
|
||||
/// </summary>
|
||||
/// <param name="asNoTracking">a flag for Tracking behaviour</param>
|
||||
/// <param name="predicate">an Expression for Filter Items ...</param>
|
||||
/// <param name="orderBuilder">an Order Builder expression for Ordering Query ...</param>
|
||||
/// <param name="includeBuilder">an Include Builder expression for Including Navigation Properties ...</param>
|
||||
/// <returns></returns>
|
||||
IQueryable<T> AsQueryable(
|
||||
bool asNoTracking = true,
|
||||
Expression<Func<T, bool>> predicate = null,
|
||||
Func<IQueryable<T>, IOrderedQueryable<T>> orderBuilder = null,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve an Entity by it's Id ...
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> GetAsync(
|
||||
TKey id,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve all exists Entities ...
|
||||
/// </summary>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="orderBuilder"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<T>> GetAllAsync(
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Func<IQueryable<T>, IOrderedQueryable<T>> orderBuilder = null,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve all exists Entities
|
||||
/// as Async Enumerable ...
|
||||
/// </summary>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="orderBuilder"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <returns></returns>
|
||||
IAsyncEnumerable<T> GetAllAsAsyncEnumerable(
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Func<IQueryable<T>, IOrderedQueryable<T>> orderBuilder = null,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// find an Entity by providing a Conditional Expression ...
|
||||
/// </summary>
|
||||
/// <param name="predicate"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> FindOneAsync(
|
||||
Expression<Func<T, bool>> predicate,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// find a collection of Entities by proving a Conditional Expression ...
|
||||
/// </summary>
|
||||
/// <param name="predicate"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="orderBuilder"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<T>> FindManyAsync(
|
||||
Expression<Func<T, bool>> predicate,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Func<IQueryable<T>, IOrderedQueryable<T>> orderBuilder = null,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// retrieve Entities based on XQuery Pagination structure ...
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="predicate"></param>
|
||||
/// <param name="orderBuilder"></param>
|
||||
/// <param name="includeBuilder"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<XQueryResult<T>> QueryAsync(
|
||||
XQuery query,
|
||||
bool ignoreSoftDeleteds = true,
|
||||
Expression<Func<T, bool>> predicate = null,
|
||||
Func<IQueryable<T>, IOrderedQueryable<T>> orderBuilder = null,
|
||||
Func<IQueryable<T>, IIncludableQueryable<T, object>> includeBuilder = null,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
@@ -230,10 +289,12 @@ namespace xDataService.Interfaces {
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="ignoreSoftDeleteds"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> IsExistsAsync (
|
||||
Task<bool> IsExistsAsync(
|
||||
TKey id,
|
||||
bool ignoreSoftDeleteds = true
|
||||
bool ignoreSoftDeleteds = true,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
@@ -243,31 +304,63 @@ namespace xDataService.Interfaces {
|
||||
/// Save all unsaved Transactions on DbContext ...
|
||||
/// used fo Unit Of Works Design Pattern ...
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> SaveChangesAsync ();
|
||||
Task<int> SaveChangesAsync(
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Key ...
|
||||
TKey GetKey (T item);
|
||||
/// <summary>
|
||||
/// Retrieve Key of Entity ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
TKey GetKey(T item);
|
||||
|
||||
void SetKey (
|
||||
/// <summary>
|
||||
/// Set Key of Entity ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="id"></param>
|
||||
void SetKey(
|
||||
ref T item,
|
||||
TKey id
|
||||
);
|
||||
|
||||
Task<T> HandleKeyAsync (T item);
|
||||
/// <summary>
|
||||
/// Handle Checking Key ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<T> HandleKeyAsync(
|
||||
T item,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
#endregion
|
||||
|
||||
//
|
||||
#region Detach ...
|
||||
void Detach (T item);
|
||||
/// <summary>
|
||||
/// Detach an Entity ...
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
void Detach(T item);
|
||||
|
||||
void Detach (IEnumerable<T> items);
|
||||
/// <summary>
|
||||
/// Detach an Enumerable of Entities ...
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
void Detach(IEnumerable<T> items);
|
||||
|
||||
void Detach (XQueryResult<T> query);
|
||||
|
||||
void Detach (XPageResponse<T> page);
|
||||
/// <summary>
|
||||
/// Detach a Query Result of Entity ...
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
void Detach(XQueryResult<T> query);
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user