385 lines
15 KiB
C#
385 lines
15 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Data;
|
|||
|
using System.Data.Common;
|
|||
|
using System.Linq;
|
|||
|
using System.Linq.Expressions;
|
|||
|
|
|||
|
namespace Learun.DataBase
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 版 本 PIT-ADMS V7.0.3 敏捷开发框架
|
|||
|
/// Copyright (c) 2013-2018 Hexagon PPM
|
|||
|
/// 创建人:研发部
|
|||
|
/// 日 期:2017.03.04
|
|||
|
/// 描 述:数据库方法操作接口
|
|||
|
/// </summary>
|
|||
|
public interface IDatabase
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 获取连接上下文
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
DbConnection getDbConnection();
|
|||
|
|
|||
|
#region 事务
|
|||
|
/// <summary>
|
|||
|
/// 开启事务
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
IDatabase BeginTrans();
|
|||
|
/// <summary>
|
|||
|
/// 提交
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
int Commit();
|
|||
|
/// <summary>
|
|||
|
/// 回滚
|
|||
|
/// </summary>
|
|||
|
void Rollback();
|
|||
|
/// <summary>
|
|||
|
/// 关闭
|
|||
|
/// </summary>
|
|||
|
void Close();
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 执行 SQL 语句
|
|||
|
/// <summary>
|
|||
|
/// 执行sql语句
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <returns></returns>
|
|||
|
int ExecuteBySql(string strSql);
|
|||
|
/// <summary>
|
|||
|
/// 执行sql语句(带参数)
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
int ExecuteBySql(string strSql, object dbParameter);
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <returns></returns>
|
|||
|
int ExecuteByProc(string procName);
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
int ExecuteByProc(string procName, object dbParameter);
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <returns></returns>
|
|||
|
T ExecuteByProc<T>(string procName) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
T ExecuteByProc<T>(string procName, object dbParameter) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> QueryByProc<T>(string procName) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 执行存储过程
|
|||
|
/// </summary>
|
|||
|
/// <param name="procName">存储过程名称</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> QueryByProc<T>(string procName, object dbParameter) where T : class;
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 对象实体 添加、修改、删除
|
|||
|
/// <summary>
|
|||
|
/// 插入实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Insert<T>(T entity) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 插入实体数据。如果表结构相同,但是表名不同。类似于SQL sugar里的AS("特定表名")
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据</param>
|
|||
|
/// <param name="tablename">实体表名</param>
|
|||
|
/// <returns></returns>
|
|||
|
int InsertByNoMap<T>(T entity, string tablename) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 批量插入实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entities">实体数据列表</param>
|
|||
|
/// <param name="tablename">实体表名</param>
|
|||
|
/// <returns></returns>
|
|||
|
int InsertByNoMap<T>(IEnumerable<T> entities, string tablename) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 批量插入实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entities">实体数据列表</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Insert<T>(IEnumerable<T> entities) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 删除实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据(需要主键赋值)</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Delete<T>(T entity) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 批量删除实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entities">实体数据列表</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Delete<T>(IEnumerable<T> entities) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 删除表数据(根据Lambda表达式)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="condition"></param>
|
|||
|
/// <returns></returns>
|
|||
|
int Delete<T>(Expression<Func<T, bool>> condition) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 更新实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Update<T>(T entity) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 更新实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据</param>
|
|||
|
/// <param name="tablename">实体表名</param>
|
|||
|
/// <param name="pkcolumn">实体主键列名</param>
|
|||
|
/// <returns></returns>
|
|||
|
int UpdateByNoMap<T>(T entity, string tablename, string pkcolumn) where T : class;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 批量更新实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entities">实体数据列表</param>
|
|||
|
/// <param name="tablename">实体表名</param>
|
|||
|
/// <param name="pkcolumn">实体主键列名</param>
|
|||
|
/// <returns></returns>
|
|||
|
int UpdateByNoMap<T>(IEnumerable<T> entities, string tablename, string pkcolumn) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 更新实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entity">实体数据</param>
|
|||
|
/// <returns></returns>
|
|||
|
int UpdateEx<T>(T entity) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 批量更新实体数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="entities">实体数据列表</param>
|
|||
|
/// <returns></returns>
|
|||
|
int Update<T>(IEnumerable<T> entities) where T : class;
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 对象实体 查询
|
|||
|
/// <summary>
|
|||
|
/// 查找一个实体根据主键
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="KeyValue">主键</param>
|
|||
|
/// <returns></returns>
|
|||
|
T FindEntity<T>(object KeyValue) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 查找一个实体(根据表达式)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="condition">表达式</param>
|
|||
|
/// <returns></returns>
|
|||
|
T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查找一个实体(根据sql)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
T FindEntity<T>(string strSql, object dbParameter = null) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 获取IQueryable表达式
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
IQueryable<T> IQueryable<T>() where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 获取IQueryable表达式(根据表达式)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="condition">表达式</param>
|
|||
|
/// <returns></returns>
|
|||
|
IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(获取表所有数据)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>() where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(获取表所有数据)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="orderby">排序</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(Func<T, object> orderby) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表根据表达式
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="condition">表达式</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表根据sql语句
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(string strSql) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 查询列表根据sql语句(带参数)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(string strSql, object dbParameter) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(分页)
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(分页)带表达式条件
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">类型</typeparam>
|
|||
|
/// <param name="condition">表达式</param>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(分页)根据sql语句
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(string strSql, string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class;
|
|||
|
/// <summary>
|
|||
|
/// 查询列表(分页)根据sql语句
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T"></typeparam>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> FindList<T>(string strSql, object dbParameter, string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class;
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 数据源查询
|
|||
|
/// <summary>
|
|||
|
/// 查询数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <returns></returns>
|
|||
|
DataTable FindTable(string strSql);
|
|||
|
/// <summary>
|
|||
|
/// 查询数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
DataTable FindTable(string strSql, object dbParameter);
|
|||
|
/// <summary>
|
|||
|
/// 查询数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
DataTable FindTable(string strSql, string orderField, bool isAsc, int pageSize, int pageIndex, out int total);
|
|||
|
/// <summary>
|
|||
|
/// 查询数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <param name="orderField">排序字段</param>
|
|||
|
/// <param name="isAsc">排序类型</param>
|
|||
|
/// <param name="pageSize">每页数据条数</param>
|
|||
|
/// <param name="pageIndex">页码</param>
|
|||
|
/// <param name="total">总共数据条数</param>
|
|||
|
/// <returns></returns>
|
|||
|
DataTable FindTable(string strSql, object dbParameter, string orderField, bool isAsc, int pageSize, int pageIndex, out int total);
|
|||
|
/// <summary>
|
|||
|
/// 获取查询对象
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <returns></returns>
|
|||
|
object FindObject(string strSql);
|
|||
|
/// <summary>
|
|||
|
/// 获取查询对象
|
|||
|
/// </summary>
|
|||
|
/// <param name="strSql">sql语句</param>
|
|||
|
/// <param name="dbParameter">参数</param>
|
|||
|
/// <returns></returns>
|
|||
|
object FindObject(string strSql, object dbParameter);
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 扩展方法
|
|||
|
/// <summary>
|
|||
|
/// 获取数据库表数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">反序列化类型</typeparam>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> GetDBTable<T>() where T : class,new();
|
|||
|
/// <summary>
|
|||
|
/// 获取数据库表字段数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">反序列化类型</typeparam>
|
|||
|
/// <param name="tableName">表名</param>
|
|||
|
/// <returns></returns>
|
|||
|
IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class,new();
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|