266 lines
12 KiB
C#
266 lines
12 KiB
C#
using System.Linq.Expressions;
|
|
using Nop.Core;
|
|
using Nop.Core.Caching;
|
|
|
|
namespace Nop.Data;
|
|
|
|
/// <summary>
|
|
/// Represents an entity repository
|
|
/// </summary>
|
|
/// <typeparam name="TEntity">Entity type</typeparam>
|
|
public partial interface IRepository<TEntity> where TEntity : BaseEntity
|
|
{
|
|
#region Methods
|
|
|
|
/// <summary>
|
|
/// Get the entity entry
|
|
/// </summary>
|
|
/// <param name="id">Entity entry identifier</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <param name="useShortTermCache">Whether to use short term cache instead of static cache</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the entity entry
|
|
/// </returns>
|
|
Task<TEntity> GetByIdAsync(int? id, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true, bool useShortTermCache = false);
|
|
|
|
/// <summary>
|
|
/// Get the entity entry
|
|
/// </summary>
|
|
/// <param name="id">Entity entry identifier</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// The entity entry
|
|
/// </returns>
|
|
TEntity GetById(int? id, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get entity entries by identifiers
|
|
/// </summary>
|
|
/// <param name="ids">Entity entry identifiers</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the entity entries
|
|
/// </returns>
|
|
Task<IList<TEntity>> GetByIdsAsync(IList<int> ids, Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the entity entries
|
|
/// </returns>
|
|
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
|
|
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the entity entries
|
|
/// </returns>
|
|
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func = null,
|
|
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>Entity entries</returns>
|
|
IList<TEntity> GetAll(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
|
|
Func<ICacheKeyService, CacheKey> getCacheKey = null, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="getCacheKey">Function to get a cache key; pass null to don't cache; return null from this function to use the default key</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the entity entries
|
|
/// </returns>
|
|
Task<IList<TEntity>> GetAllAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func,
|
|
Func<ICacheKeyService, Task<CacheKey>> getCacheKey, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="pageIndex">Page index</param>
|
|
/// <param name="pageSize">Page size</param>
|
|
/// <param name="getOnlyTotalCount">Whether to get only the total number of entries without actually loading data</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the paged list of entity entries
|
|
/// </returns>
|
|
Task<IPagedList<TEntity>> GetAllPagedAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> func = null,
|
|
int pageIndex = 0, int pageSize = int.MaxValue, bool getOnlyTotalCount = false, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Get all entity entries
|
|
/// </summary>
|
|
/// <param name="func">Function to select entries</param>
|
|
/// <param name="pageIndex">Page index</param>
|
|
/// <param name="pageSize">Page size</param>
|
|
/// <param name="getOnlyTotalCount">Whether to get only the total number of entries without actually loading data</param>
|
|
/// <param name="includeDeleted">Whether to include deleted items (applies only to <see cref="Nop.Core.Domain.Common.ISoftDeletedEntity"/> entities)</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the paged list of entity entries
|
|
/// </returns>
|
|
Task<IPagedList<TEntity>> GetAllPagedAsync(Func<IQueryable<TEntity>, Task<IQueryable<TEntity>>> func = null,
|
|
int pageIndex = 0, int pageSize = int.MaxValue, bool getOnlyTotalCount = false, bool includeDeleted = true);
|
|
|
|
/// <summary>
|
|
/// Insert the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task InsertAsync(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Insert the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Insert(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Insert entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task InsertAsync(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Insert entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Insert(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Update the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task UpdateAsync(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Update the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Update(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Update entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task UpdateAsync(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Update entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Update(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Delete the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task DeleteAsync(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Delete the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Delete(TEntity entity, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Delete entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task DeleteAsync(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Delete entity entries
|
|
/// </summary>
|
|
/// <param name="entities">Entity entries</param>
|
|
/// <param name="publishEvent">Whether to publish event notification</param>
|
|
void Delete(IList<TEntity> entities, bool publishEvent = true);
|
|
|
|
/// <summary>
|
|
/// Delete entity entries by the passed predicate
|
|
/// </summary>
|
|
/// <param name="predicate">A function to test each element for a condition</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the number of deleted records
|
|
/// </returns>
|
|
Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate);
|
|
|
|
/// <summary>
|
|
/// Delete entity entries by the passed predicate
|
|
/// </summary>
|
|
/// <param name="predicate">A function to test each element for a condition</param>
|
|
/// <returns>
|
|
/// The number of deleted records
|
|
/// </returns>
|
|
int Delete(Expression<Func<TEntity, bool>> predicate);
|
|
|
|
/// <summary>
|
|
/// Loads the original copy of the entity entry
|
|
/// </summary>
|
|
/// <param name="entity">Entity entry</param>
|
|
/// <returns>
|
|
/// A task that represents the asynchronous operation
|
|
/// The task result contains the copy of the passed entity entry
|
|
/// </returns>
|
|
Task<TEntity> LoadOriginalCopyAsync(TEntity entity);
|
|
|
|
/// <summary>
|
|
/// Truncates database table
|
|
/// </summary>
|
|
/// <param name="resetIdentity">Performs reset identity column</param>
|
|
/// <returns>A task that represents the asynchronous operation</returns>
|
|
Task TruncateAsync(bool resetIdentity = false);
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Gets a table
|
|
/// </summary>
|
|
IQueryable<TEntity> Table { get; }
|
|
|
|
#endregion
|
|
} |