103 lines
3.2 KiB
C#
103 lines
3.2 KiB
C#
using System.Linq.Expressions;
|
|
using Fake.Domain.Entities;
|
|
using Fake.DomainDrivenDesign.Repositories.SqlSugarCore;
|
|
|
|
namespace InterfaceForward.Repositories;
|
|
|
|
public interface IBasicRepository<T>: ISqlSugarRepository<InterfaceForwardDbContext, T> where T : class, IAggregateRoot, new()
|
|
{
|
|
public ISugarQueryable<T> AsQueryable();
|
|
|
|
/// <summary>
|
|
/// top 1
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<T?> GetFirstAsync(Expression<Func<T, bool>> whereExpression);
|
|
|
|
Task<TResult?> GetFirstAsync<TResult>(Expression<Func<T, bool>> whereExpression,Expression<Func<T, TResult>> resultExpression);
|
|
|
|
/// <summary>
|
|
/// get list
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<List<T>> GetListAsync(Expression<Func<T, bool>> whereExpression);
|
|
|
|
Task<List<TResult>> GetListAsync<TResult>(Expression<Func<T, bool>> whereExpression,Expression<Func<T, TResult>> resultExpression);
|
|
|
|
/// <summary>
|
|
/// count
|
|
/// </summary>
|
|
/// <param name="exp"></param>
|
|
/// <returns></returns>
|
|
Task<int> CountAsync(Expression<Func<T, bool>> exp);
|
|
|
|
/// <summary>
|
|
/// exists
|
|
/// </summary>
|
|
/// <param name="exp"></param>
|
|
/// <returns></returns>
|
|
Task<bool> IsAnyAsync(Expression<Func<T, bool>> exp);
|
|
|
|
/// <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);
|
|
} |