169 lines
6.7 KiB
C#
Raw Normal View History

2025-04-21 14:10:27 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using MyCode.Project.Infrastructure.Search;
using MyCode.Project.Infrastructure.Common;
using System.Data.SqlClient;
using SqlSugar;
using System.Data;
namespace MyCode.Project.Domain.Repositories
{
public interface IRepository<TEntity> where TEntity : class
{
#region
void BeginTran();
void CommitTran();
void RollbackTran();
#endregion
/// <summary>
/// 根据表达式得到列表
/// </summary>
/// <param name="whereExpression">条件</param>
/// <returns></returns>
List<TEntity> SelectList(Expression<Func<TEntity, bool>> whereExpression=null);
/// <summary>
/// 查询分页
/// 例子 "select * from table where id=@id and name=@name",new {id=1,name="a"}
/// </summary>
PageResult<T> SelectListPage<T>(string sql, int pageIndex, int pageSize, string order, object parameters = null) where T : class, new();
/// <summary>
/// 查询分页
/// </summary>
PageResult<T> SelectListPage<T>(string sql, SearchCondition condition, int pageIndex, int pageSize, string order) where T : class, new();
/// <summary>
/// 执行命令
/// </summary>
/// <param name="sql">SQL条件</param>
/// <param name="parameters">参数可以直接用new{id=1}</param>
/// <returns></returns>
int ExecuteSqlCommand(string sql, object parameters = null);
/// <summary>
/// 返回单条记录
/// </summary>
/// <param name="whereExpression"></param>
/// <returns></returns>
TEntity SelectFirst(Expression<Func<TEntity, bool>> whereExpression);
/// <summary>
/// 用SQL返回单条记录
/// 例子 "select * from table where id=@id and name=@name",new {id=1,name="a"}
/// </summary>
T SelectFirst<T>(string sql, object parameters = null);
/// <summary>
/// 用SQL返回多条记录
/// 例子 "select * from table where id=@id and name=@name",new {id=1,name="a"}
/// </summary>
List<T> SelectList<T>(string sql, object parameters = null);
/// <summary>
/// 用SQL + 条件返回多条记录
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="strSql">SQL语句</param>
/// <param name="where">SearchCondition对象</param>
/// <returns></returns>
List<T> SelectList<T>(string strSql, SearchCondition where);
/// <summary>
/// 根据主键返回的列表
/// </summary>
/// <param name="ids">一组主键ID</param>
/// <returns></returns>
List<TEntity> SelectList(List<Guid> ids);
/// <summary>
/// 得到数量
/// </summary>
/// <param name="predicate">条件</param>
/// <returns></returns>
int Count(Expression<Func<TEntity, bool>> predicate);
/// <summary>
/// 添加
/// </summary>
/// <param name="instance">实体</param>
/// <param name="tablename">null使用默认表名。不为NULL适用于分表情况</param>
void Add(TEntity instance, string tablename = null);
/// <summary>
/// 批量添加实体
/// </summary>
/// <param name="entities">实体集合</param>
/// <param name="tablename">null使用默认表名。不为NULL适用于分表情况</param>
void Add(List<TEntity> entities, string tablename = null);
/// <summary>
/// 单个的修改
/// </summary>
/// <param name="instance"></param>
void Update(TEntity instance);
/// <summary>
/// 修改一组对象
/// </summary>
/// <param name="updateObjs"></param>
void Update(List<TEntity> updateObjs);
/// <summary>
/// 批量修改,只修改某些字段
/// </summary>
/// <param name="updateObjs"></param>
/// <param name="columns"></param>
void Update(List<TEntity> updateObjs, Expression<Func<TEntity, object>> columns);
/// <summary>
/// 按字段批量修改一组对象
/// </summary>
/// <param name="updateObjs">一组对象</param>
/// <param name="columns">要修改的列</param>
void Update(IEnumerable<TEntity> updateObjs, Expression<Func<TEntity, object>> columns);
/// <summary>
/// 根据表达式是否存在
/// </summary>
/// <param name="whereExpression"></param>
/// <returns></returns>
bool IsExist(Expression<Func<TEntity, bool>> whereExpression);
/// <summary>
/// 批量修改的方法
/// </summary>
/// <param name="updateDynamicObject">修改的动态对象</param>
/// <param name="columns">要修改的列</param>
//void Update(dynamic updateDynamicObject, Expression<Func<TEntity, TEntity>> columns);
//void Update(dynamic updateDynamicObject);
/// <summary>
/// 按字段修改,满足条件的数据,批量修改的补充。
/// 例子Update(it => new WorkProcess { Remark = "测试批量修改",SystemType = 0 },p => p.WorkProcessId ==Guid.Parse("7BDDBBD3-B1CD-4C25-93BA-D7BF22032108"));
/// </summary>
/// <param name="columns">要修改的列</param>
/// <param name="whereExpression">要修改的条件</param>
int Update(Expression<Func<TEntity, TEntity>> columns, Expression<Func<TEntity, bool>> whereExpression);
/// <summary>
/// 根据表达式删除
/// </summary>
/// <param name="whereExpression"></param>
int Delete(Expression<Func<TEntity, bool>> whereExpression);
/// <summary>
/// 根据ID删除
/// </summary>
/// <param name="ids"></param>
void DeleteByIds(dynamic[] ids);
/// <summary>
/// 得到一个更加灵活的查询对象
/// </summary>
/// <returns></returns>
ISugarQueryable<TEntity> Queryable();
/// <summary>
/// 用SQL返回单条记录
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql">SQL语句</param>
/// <param name="searchCondition">条件Condition</param>
/// <returns></returns>
T SelectFirst<T>(string sql, SearchCondition searchCondition);
/// <summary>
/// 得到Table表数据
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
DataTable SelectTable(string sql, object parameters = null);
}
}