using learun.util;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
namespace learun.database
{
///
/// 版 本 EasyCode EC管理后台
/// Copyright (c) 2019-present EC管理有限公司
/// 创建人:tobin
/// 日 期:2019.09.10
/// 描 述:数据库接口类
///
public class Repository : IRepository
{
#region 构造
///
/// 数据库操作接口
///
public IDataBase db;
///
/// 构造函数
///
///
public Repository(IDataBase idatabase)
{
this.db = idatabase;
}
#endregion 构造
#region 事务
///
/// 开始事务
///
///
public IRepository BeginTrans()
{
db.BeginTrans();
return this;
}
///
/// 提交
///
public void Commit()
{
db.Commit();
}
///
/// 回滚
///
public void Rollback()
{
db.Rollback();
}
#endregion 事务
#region 执行sql语句
///
/// 执行sql语句(带参数)
///
/// sql语句
/// 参数
///
public Task ExecuteSql(string strSql, object param = null)
{
return this.db.ExecuteSql(strSql, param);
}
#endregion 执行sql语句
#region 执行存储过程
///
/// 执行存储过程
///
/// 存储过程名称
/// 参数
///
public Task ExecuteProc(string procName, object param = null)
{
return this.db.ExecuteProc(procName, param);
}
///
/// 执行存储过程(查询实体数据)
///
/// 存储过程名称
/// 参数
///
public Task ExecuteProc(string procName, object param = null) where T : class
{
return this.db.ExecuteProc(procName, param);
}
///
/// 执行存储过程(查询实体数据)
///
///
/// 存储过程名称.
/// 参数
public Task QueryFirstProc(string procName, object param = null)
{
return this.db.QueryFirstProc(procName, param);
}
///
/// 执行存储过程(获取列表数据)
///
/// 存储过程名称
/// 参数
///
public Task> QueryProc(string procName, object param = null) where T : class
{
return this.db.QueryProc(procName, param);
}
///
/// 执行存储过程(获取列表数据)
///
/// 存储过程名称
/// 参数
///
public Task> QueryProc(string procName, object param = null)
{
return this.db.QueryProc(procName, param);
}
#endregion 执行存储过程
#region 对像实体 新增/修改/删除
///
/// 插入实体数据
///
/// 类型
/// 实体数据
///
public Task Insert(T entity) where T : class
{
return this.db.Insert(entity);
}
///
/// 更新实体数据
///
///
/// 实体数据
/// 是否只更新有值的字段
/// 类型
public Task Update(T entity, bool isOnlyHasValue = true) where T : class
{
return this.db.Update(entity, isOnlyHasValue);
}
///
/// 删除实体数据
///
///
/// 实体数据
/// 类型
public Task Delete(T entity) where T : class
{
return this.db.Delete(entity);
}
///
/// 删除数据根据给定的字段值
///
///
/// 参数
/// 类型
public Task DeleteAny(object param) where T : class
{
return this.db.DeleteAny(param);
}
#endregion 对像实体 新增/修改/删除
#region 对象实体查询
///
/// 获取单个实体数据
///
/// 单个实体数据
/// 主键
/// 类
public Task FindEntityByKey(object keyValue) where T : class
{
return this.db.FindEntityByKey(keyValue);
}
///
/// 获取单个实体数据
///
/// 单个实体数据
/// sql语句
/// 参数
/// 类
public Task FindEntity(string sql, object param = null) where T : class
{
return this.db.FindEntity(sql, param);
}
///
/// 获取单个实体数据
///
/// 单个实体数据
/// 参数
/// 类
public Task FindEntity(object param) where T : class
{
return this.db.FindEntity(param);
}
///
/// 获取单个实体数据
///
/// 单个实体数据
/// sql语句.
/// 参数.
public Task FindEntity(string sql, object param = null)
{
return this.db.FindEntity(sql, param);
}
///
/// 获取数据列表
///
/// 列表数据
/// sql语句.
/// 参数.
/// 类型.
public Task> FindList(string sql, object param = null) where T : class
{
return this.db.FindList(sql, param);
}
///
/// 获取数据列表
///
/// 列表数据
/// 参数.
/// 类型.
public Task> FindList(object param) where T : class
{
return this.db.FindList(param);
}
///
/// 获取数据列表
///
/// 列表数据
/// sql语句.
/// 参数.
public Task> FindList(string sql, object param = null)
{
return this.db.FindList(sql, param);
}
///
/// 获取数据列表(分页)
///
/// 列表数据
/// sql语句
/// 参数
/// 排序字段
/// 排序类型
/// 每页数据条数
/// 页码
/// 类
public Task<(IEnumerable list, int total)> FindList(string sql, object param, string orderField, bool isAsc, int pageSize, int pageIndex) where T : class
{
return this.db.FindList(sql, param, orderField, isAsc, pageSize, pageIndex);
}
///
/// 获取数据列表(分页)
///
/// 类
/// sql语句
/// 参数
/// 分页参数
///
public Task> FindList(string sql, object param, Pagination pagination) where T : class
{
return this.db.FindList(sql, param, pagination);
}
///
/// 获取数据列表(分页)
///
/// 列表数据
/// sql语句
/// 参数
/// 排序字段
/// 排序类型
/// 每页数据条数
/// 页码
public Task<(IEnumerable list, int total)> FindList(string sql, object param, string orderField, bool isAsc, int pageSize, int pageIndex)
{
return this.db.FindList(sql, param, orderField, isAsc, pageSize, pageIndex);
}
///
/// 获取数据列表(分页)
///
/// sql语句
/// 参数
/// 分页参数
///
public Task> FindList(string sql, object param, Pagination pagination)
{
return this.db.FindList(sql, param, pagination);
}
///
/// 获取表的所有数据
///
/// 列表数据
/// 类
public Task> FindAll() where T : class
{
return this.db.FindAll();
}
#endregion 对象实体查询
#region 数据源查询
///
/// 查询方法,返回datatable
///
/// datatable数据
/// sql语句
/// 参数
public Task FindTable(string sql, object param = null)
{
return this.db.FindTable(sql, param);
}
///
/// 分页查询方法,返回datatable
///
/// sql语句
/// 参数
/// 排序字段
/// 排序类型
/// 每页数据条数
/// 页码
/// list数据,total 总共条数
public Task<(DataTable list, int total)> FindTable(string sql, object param, string orderField, bool isAsc, int pageSize, int pageIndex)
{
return this.db.FindTable(sql, param, orderField, isAsc, pageSize, pageIndex);
}
///
/// 分页查询方法,返回datatable
///
/// sql语句
/// 参数
/// 分页参数
///
public Task FindTable(string sql, object param, Pagination pagination)
{
return this.db.FindTable(sql, param, pagination);
}
#endregion 数据源查询
#region 获取数据库表信息
///
/// 获取数据库表信息
///
/// 数据库表信息
public Task> GetDataBaseTable()
{
return this.db.GetDataBaseTable();
}
///
/// 获取表的字段信息
///
/// 表的字段信息
/// 表名
public Task> GetDataBaseTableFields(string tableName)
{
return this.db.GetDataBaseTableFields(tableName);
}
///
/// 获取数据库地址信息
///
/// 数据库地址信息
public string GetDataSource()
{
return this.db.GetDataSource();
}
///
/// 测试数据库是否能链接成功
///
/// The connection.
public string TestConnection()
{
return this.db.TestConnection();
}
///
/// 获取sql语句的字段
///
/// sql语句
///
public Task> GetSqlColName(string strSql)
{
return this.db.GetSqlColName(strSql);
}
#endregion 获取数据库表信息
}
}