using System.Linq.Expressions; using XF.Domain.Entities; namespace XF.Domain.Repository { public interface IRepositoryWithTKey where TEntity : class, IEntity, new() where TKey : IEquatable { Task AddAsync(TEntity entity, CancellationToken cancellationToken = default); /// /// 批量插入(应用场景:小数据量,超出1万条建议另行实现) /// /// /// /// Task AddRangeAsync(List entities, CancellationToken cancellationToken = default); Task RemoveAsync(TEntity entity, bool? soft = false, CancellationToken cancellationToken = default); Task RemoveAsync(TKey id, bool? soft = false, CancellationToken cancellationToken = default); Task RemoveAsync(Expression> predicate, bool? soft = false, CancellationToken cancellationToken = default); Task RemoveRangeAsync(IEnumerable entities, CancellationToken cancellationToken = default); Task UpdateAsync(TEntity entity, CancellationToken cancellationToken = default); Task UpdateRangeAsync(List entities, CancellationToken cancellationToken = default); Task GetAsync(TKey id, CancellationToken cancellationToken = default); Task GetAsync(Expression> predicate, CancellationToken cancellationToken = default); Task GetAsync(Expression> predicate, bool isDesc, Expression> orderBy, CancellationToken cancellationToken = default); Task> QueryAsync( Expression>? predicate = null, params (bool isWhere, Expression> expression)[] whereIfs); Task AnyAsync(CancellationToken cancellationToken = default); Task AnyAsync(Expression> predicate, CancellationToken cancellationToken = default); Task CountAsync(Expression> predicate, CancellationToken cancellationToken = default); } }