track/src/SJZY.Track.Domain/IBasicRepository.cs
2024-03-01 10:27:55 +08:00

67 lines
2.0 KiB
C#

using SJZY.Track.Domain.Queries;
namespace SJZY.Track.Domain;
public interface IBasicRepository<T> : IBasicQuery<T> where T : IAggregateRoot
{
/// <summary>
/// update
/// </summary>
/// <param name="entity"></param>
/// <param name="ignoreColumns">要忽略更新的列</param>
/// <returns></returns>
Task<bool> UpdateAsync(T entity, Expression<Func<T, object>>? ignoreColumns);
/// <summary>
/// update
/// </summary>
/// <param name="entity"></param>
/// <param name="updateColumns">要更新的列</param>
/// <returns></returns>
Task<bool> UpdateColumnAsync(T entity, Expression<Func<T, object>>? updateColumns);
/// <summary>
/// update
/// </summary>
/// <param name="entity"></param>
/// <param name="ignoreAllNullColumns">不更新null值列</param>
/// <param name="ignoreAllDefaultValue">不更新默认值列</param>
/// <returns></returns>
Task<bool> UpdateAsync(T entity, bool ignoreAllNullColumns = false, bool ignoreAllDefaultValue = false);
/// <summary>
/// 批量更新
/// </summary>
/// <param name="entities"></param>
/// <param name="updateColumns">要更新的列</param>
/// <returns></returns>
Task<bool> UpdateRangeAsync(List<T> entities, Expression<Func<T, object>>? updateColumns = null);
/// <summary>
/// 软删
/// </summary>
/// <param name="where"></param>
/// <returns></returns>
Task<bool> SoftDeleteAsync(Expression<Func<T, bool>> where);
/// <summary>
/// insert
/// </summary>
/// <param name="insertObj"></param>
/// <returns></returns>
Task<bool> InsertAsync(T insertObj);
/// <summary>
/// 新增返回id
/// </summary>
/// <param name="insertObj"></param>
/// <returns></returns>
Task<int> InsertReturnIdentityAsync(T insertObj);
/// <summary>
/// 批量insert
/// </summary>
/// <param name="entities"></param>
/// <returns></returns>
Task<bool> InsertRangeAsync(List<T> entities);
}