385 lines
15 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}