using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Data.Entity.Infrastructure; using System.Data.Entity; using System.Linq.Expressions; using Central.Control.Domain; using Ant.Service.Common; namespace MES.Production.Service { /// /// 所有的数据操作基类接口 /// add 作者: 季健国 QQ:181589805 by 2016-05-10 /// public interface IRepository where T : class { #region 数据对象操作 /// /// 数据上下文 /// DbContext Context { get; } /// /// 数据上下文 /// MyConfig Config { get; } /// /// 数据模型操作 /// DbSet dbSet { get; } /// /// EF事务 /// DbContextTransaction Transaction { get; set; } /// /// 事务提交结果 /// bool Committed { get; set; } /// /// 提交事务 /// void Commit(); /// /// 回滚事务 /// void Rollback(); #endregion #region 单模型操作 /// /// 获取实体 /// /// 主键 /// 实体 T Get(Expression> predicate); /// /// 插入实体 /// /// 实体 /// ID bool Save(T entity); /// /// /// /// /// T SaveReturn(T entity); /// /// 修改实体 /// /// 实体 bool Update(T entity); /// /// 修改或保存实体 /// /// 实体 bool SaveOrUpdate(T entity, bool isEdit); /// /// /// /// /// /// T SaveOrUpdateReturn(T entity, bool isEdit); /// /// 删除实体 /// int Delete(Expression> predicate = null); /// /// 执行SQL删除 /// int DeleteBySql(string sql, params DbParameter[] para); /// /// 根据属性验证实体对象是否存在 /// bool IsExist(Expression> predicate); /// /// 根据SQL验证实体对象是否存在 /// bool IsExist(string sql, params DbParameter[] para); #endregion #region 多模型操作 /// /// 增加多模型数据,指定独立模型集合 /// int SaveList(List t) where T1 : class; /// /// 增加多模型数据,与当前模型一致 /// int SaveList(List t); /// /// 更新多模型,指定独立模型集合 /// int UpdateList(List t) where T1 : class; /// /// 更新多模型,与当前模型一致 /// int UpdateList(List t); /// /// 批量删除数据,当前模型 /// int DeleteList(List t); /// /// 批量删除数据,独立模型 /// int DeleteList(List t) where T1 : class; #endregion #region 存储过程操作 /// /// 执行增删改存储过程 /// object ExecuteProc(string procname, params DbParameter[] parameter); /// /// 执行查询的存储过程 /// object ExecuteQueryProc(string procname, params DbParameter[] parameter); #endregion #region 查询多条数据 /// /// 获取集合 IQueryable /// IQueryable LoadAll(Expression> predicate); /// /// 获取集合 IList /// List LoadListAll(Expression> predicate); /// /// 获取DbQuery的列表 /// DbQuery LoadQueryAll(Expression> predicate); /// /// 获取IEnumerable列表 /// IEnumerable LoadEnumerableAll(string sql, params DbParameter[] para); /// /// 获取数据动态集合 /// System.Collections.IEnumerable LoadEnumerable(string sql, params DbParameter[] para); /// /// 采用SQL进行数据的查询,并转换 /// List SelectBySql(string sql, params DbParameter[] para); List SelectBySql(string sql, params DbParameter[] para); /// /// 可指定返回结果、排序、查询条件的通用查询方法,返回实体对象 /// /// 实体对象 /// 排序字段类型 /// 数据结果,一般为object /// 过滤条件,需要用到类型转换的需要提前处理与数据表一致的 /// 排序字段 /// 返回结果(必须是模型中存在的字段) /// 排序方向,true为正序false为倒序 /// 实体集合 List QueryEntity(Expression> where, Expression> orderby, Expression> selector, bool IsAsc) where TEntity : class where TResult : class; /// /// 可指定返回结果、排序、查询条件的通用查询方法,返回Object对象 /// /// 实体对象 /// 排序字段类型 /// 过滤条件,需要用到类型转换的需要提前处理与数据表一致的 /// 排序字段 /// 返回结果(必须是模型中存在的字段) /// 排序方向,true为正序false为倒序 /// 自定义实体集合 List QueryObject(Expression> where, Expression> orderby, Func, List> selector, bool IsAsc) where TEntity : class; /// /// 可指定返回结果、排序、查询条件的通用查询方法,返回动态类对象 /// /// 实体对象 /// 排序字段类型 /// 过滤条件,需要用到类型转换的需要提前处理与数据表一致的 /// 排序字段 /// 返回结果(必须是模型中存在的字段) /// 排序方向,true为正序false为倒序 /// 动态类对象 dynamic QueryDynamic(Expression> where, Expression> orderby, Func, List> selector, bool IsAsc) where TEntity : class; #endregion #region 分页查询 /// /// 通过SQL分页 /// /// /// /// /// IList PageByListSql(string sql, IList parameters, PageCollection page); IList PageByListSql(string sql, IList parameters, PageCollection page); /// /// 通用EF分页,默认显示20条记录 /// /// 实体模型 /// 排序类型 /// 当前页 /// 显示条数 /// 过滤条件 /// 排序字段 /// 结果集合 /// 排序方向true正序 false倒序 /// 自定义实体集合 PageInfo Query (int index, int pageSize, Expression> where, Expression> orderby, Func, List> selector, bool IsAsc) where TEntity : class; /// /// 对IQueryable对象进行分页逻辑处理,过滤、查询项、排序对IQueryable操作 /// /// Iqueryable /// 当前页 /// 每页显示多少条 /// 当前IQueryable to List的对象 PageInfo Query(IQueryable query, int index, int PageSize); /// /// 普通SQL查询分页方法 /// /// 当前页 /// 显示行数 /// 表名/视图 /// 获取项 /// 过滤条件 /// 排序字段+排序方向 /// 分组字段 /// 结果集 PageInfo Query(int index, int pageSize, string tableName, string field, string filter, string orderby, string group, params DbParameter[] para); /// /// 简单的Sql查询分页 /// /// /// /// /// PageInfo Query(int index, int pageSize, string sql, string orderby, params DbParameter[] para); /// /// 多表联合分页算法 /// PageInfo Query(IQueryable query, int index, int pagesize); #endregion #region ADO.NET增删改查方法 /// /// 执行增删改方法,含事务处理 /// object ExecuteSqlCommand(string sql, params DbParameter[] para); /// /// 执行多条SQL,增删改方法,含事务处理 /// object ExecuteSqlCommand(Dictionary sqllist); /// /// 执行查询方法,返回动态类,接收使用var,遍历时使用dynamic类型 /// object ExecuteSqlQuery(string sql, params DbParameter[] para); #endregion } }