mh_frame_sps/APT.Infrastructure.Core/EF/IRepositoryAsync.cs
2026-04-07 13:47:52 +08:00

121 lines
4.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace APT.Infrastructure.Core
{
/// <summary>
/// 异步泛型主键实体仓储接口
/// </summary>
/// <typeparam name="TEntity">实体类型</typeparam>
/// <typeparam name="TKey">实体主键类型</typeparam>
public interface IRepositoryAsync<TEntity, in TKey> where TEntity : EntityBase<TKey>
{
/// <summary>
/// 异步插入实体
/// </summary>
/// <param name="entity">实体对象</param>
/// <returns>操作影响的行数</returns>
Task<int> AddAsync(TEntity entity);
/// <summary>
/// 异步批量插入实体
/// </summary>
/// <param name="entities">实体对象集合</param>
/// <returns>操作影响的行数</returns>
Task<int> AddAsync(IEnumerable<TEntity> entities);
/// <summary>
/// 异步删除实体
/// </summary>
/// <param name="entity">实体对象</param>
/// <returns>操作影响的行数</returns>
Task<int> DeleteAsync(TEntity entity);
/// <summary>
/// 异步删除指定编号的实体
/// </summary>
/// <param name="key">实体编号</param>
/// <returns>操作影响的行数</returns>
Task<int> DeleteAsync(TKey key);
/// <summary>
/// 异步删除所有符合特定条件的实体
/// </summary>
/// <param name="predicate">查询条件谓语表达式</param>
/// <returns>操作影响的行数</returns>
Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate);
/// <summary>
/// 异步批量删除删除实体
/// </summary>
/// <param name="entities">实体对象集合</param>
/// <returns>操作影响的行数</returns>
Task<int> DeleteAsync(IEnumerable<TEntity> entities);
/// <summary>
/// 异步更新实体对象
/// </summary>
/// <param name="entity">实体对象</param>
/// <returns>操作影响的行数</returns>
Task<int> UpdateAsync(TEntity entity);
/// <summary>
/// 异步批量更新实体对象
/// </summary>
/// <param name="entities">实体对象集合</param>
/// <returns>操作影响的行数</returns>
Task<int> UpdateAsync(IEnumerable<TEntity> entities);
/// <summary>
/// 批量更新
/// </summary>
/// <param name="predicate">查询条件谓语表达式</param>
/// <param name="updateExpression">更新表达式</param>
/// <returns>操作影响的行数</returns>
Task<int> UpdateAsync(Expression<Func<TEntity, bool>> predicate, Expression<Func<TEntity, TEntity>> updateExpression);
/// <summary>
/// 异步获取指定主键的实体
/// </summary>
/// <param name="key">实体主键</param>
/// <returns>符合主键的实体不存在时返回null</returns>
Task<TEntity> GetByKeyAsync(TKey key);
/// <summary>
/// 异步获取符合条件的实体
/// </summary>
/// <param name="predicate">查询条件谓语表达式</param>
/// <returns>符合条件的实体不存在时返回null</returns>
Task<TEntity> GetAsync(Expression<Func<TEntity, bool>> predicate);
/// <summary>
/// 异步获取记录数
/// </summary>
/// <returns></returns>
Task<int> CountAsync();
/// <summary>
/// 异步获取符合条件的记录数
/// </summary>
/// <param name="predicate">查询条件谓语表达式</param>
/// <returns></returns>
Task<int> CountAsync(Expression<Func<TEntity, bool>> predicate = null);
/// <summary>
/// 异步是否存在符合条件的记录
/// </summary>
/// <param name="predicate">查询条件谓语表达式</param>
/// <returns></returns>
Task<bool> ExistsAsync(Expression<Func<TEntity, bool>> predicate);
}
public interface IRepositoryAsync<TEntity> : IRepositoryAsync<TEntity, Guid> where TEntity : EntityBase<Guid>
{
}
public interface IIntRepositoryAsync<TEntity> : IRepositoryAsync<TEntity, int> where TEntity : EntityBase<int>
{
}
}