using Lottomat.Util.WebControl;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
namespace Lottomat.Data.Repository
{
///
/// 版 本 1.0
/// Copyright (c) 2016-2017
/// 创建人:赵轶
/// 日 期:2015.10.10
/// 描 述:定义仓储模型中的数据标准操作
///
/// 动态实体类型
public class Repository : IRepository where T : class,new()
{
#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 语句
///
/// 执行T-SQL
///
/// sql语句
///
public int ExecuteBySql(string strSql)
{
return db.ExecuteBySql(strSql);
}
///
/// 执行T-SQL
///
/// sql语句
/// DbCommand参数
///
public int ExecuteBySql(string strSql, params DbParameter[] dbParameter)
{
return db.ExecuteBySql(strSql, dbParameter);
}
///
/// 执行存储过程
///
/// 存储过程名称
///
public int ExecuteByProc(string procName)
{
return db.ExecuteByProc(procName);
}
///
/// 执行存储过程
///
/// 存储过程名称
/// DbCommand参数
///
public int ExecuteByProc(string procName, params DbParameter[] dbParameter)
{
return db.ExecuteByProc(procName, dbParameter);
}
#endregion
#region 对象实体 添加、修改、删除
///
/// 插入一条数据
///
/// 对象实体
///
public int Insert(T entity)
{
return db.Insert(entity);
}
///
/// 批量插入数据
///
/// 对象实体集合
///
public int Insert(List entity)
{
return db.Insert(entity);
}
///
/// 删除
///
///
public int Delete()
{
return db.Delete();
}
///
/// 删除一条数据
///
/// 对象实体
///
public int Delete(T entity)
{
return db.Delete(entity);
}
///
/// 批量删除
///
/// 对象实体集合
///
public int Delete(List entity)
{
return db.Delete(entity);
}
///
/// 根据条件删除数据
///
/// 条件
///
public int Delete(Expression> condition)
{
return db.Delete(condition);
}
///
/// 根据主键删除一条数据
///
/// 主键
///
public int Delete(object keyValue)
{
return db.Delete(keyValue);
}
///
/// 根据主键批量删除一条数据
///
/// 主键数组
///
public int Delete(object[] keyValue)
{
return db.Delete(keyValue);
}
///
/// 根据属性删除
///
/// 属性值
/// 属性名
///
public int Delete(object propertyValue, string propertyName)
{
return db.Delete(propertyValue, propertyName);
}
///
/// 更新一条数据
///
/// 实体对象
///
public int Update(T entity)
{
return db.Update(entity);
}
///
/// 批量更新
///
/// 实体对象集合
///
public int Update(List entity)
{
return db.Update(entity);
}
///
/// 根据条件更新
///
/// 条件
///
public int Update(Expression> condition)
{
return db.Update(condition);
}
///
/// 批量修改
///
/// 要修改的列及修改后列的值集合
/// 修改的条件
/// 修改列的名称的集合
/// 返回受影响行数
public int Modify(T modelModifyProps, Expression> where, params string[] paramModifyStrings)
{
int req = -1;
req = db.Modify(modelModifyProps, where, paramModifyStrings);
return req;
}
#endregion
#region 对象实体 查询
///
/// 获取IQueryable对象
///
///
public IQueryable IQueryable()
{
return db.IQueryable();
}
///
/// 根据条件获取IQueryable对象
///
///
///
public IQueryable IQueryable(Expression> condition)
{
return db.IQueryable(condition);
}
///
/// 根据主键获取一条数据
///
/// 主键值
///
public T FindEntity(object keyValue)
{
return db.FindEntity(keyValue);
}
///
/// 根据条件获取一条数据
///
/// 条件
///
public T FindEntity(Expression> condition)
{
return db.FindEntity(condition);
}
///
/// 根据条件获取一条数据,返回对象集合
///
/// 条件
///
public IEnumerable FindList(Expression> condition)
{
return db.FindList(condition);
}
///
/// 根据T-SQL语句获取一条数据,返回对象集合
///
/// T-SQL语句
///
public IEnumerable FindList(string strSql)
{
return db.FindList(strSql);
}
///
/// 根据T-SQL语句获取一条数据,返回对象集合
///
/// T-SQL语句
/// DbCommand参数
///
public IEnumerable FindList(string strSql, DbParameter[] dbParameter)
{
return db.FindList(strSql, dbParameter);
}
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// 分页参数
///
public IEnumerable FindList(Pagination pagination)
{
int total = pagination.records;
var data = db.FindList(pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
///
/// 根据分页参数、条件获取一条数据,返回对象集合
///
/// 条件
/// 分页参数
///
public IEnumerable FindList(Expression> condition, Pagination pagination)
{
int total = pagination.records;
var data = db.FindList(condition, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// T-SQL语句
/// 分页参数
///
public IEnumerable FindList(string strSql, Pagination pagination)
{
int total = pagination.records;
var data = db.FindList(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// T-SQL语句
/// DbCommand参数
/// 分页参数
///
public IEnumerable FindList(string strSql, DbParameter[] dbParameter, Pagination pagination)
{
int total = pagination.records;
var data = db.FindList(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
public IEnumerable FindList(Expression> condition, string orderField, bool isAsc, int pageSize, int pageIndex,
out int total) where T1 : class, new()
{
return db.FindList(condition, orderField, isAsc, pageSize, pageIndex, out total);
}
#endregion
#region 数据源 查询
///
/// 返回DataTable
///
/// T-SQL语句
///
public DataTable FindTable(string strSql)
{
return db.FindTable(strSql);
}
///
/// 返回DataTable
///
/// T-SQL语句
/// DbCommand参数
///
public DataTable FindTable(string strSql, DbParameter[] dbParameter)
{
return db.FindTable(strSql, dbParameter);
}
///
/// 返回DataTable
///
/// T-SQL语句
/// 分页参数
///
public DataTable FindTable(string strSql, Pagination pagination)
{
int total = pagination.records;
var data = db.FindTable(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
///
/// 返回DataTable
///
/// T-SQL语句
/// DbCommand参数
/// 分页参数
///
public DataTable FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination)
{
int total = pagination.records;
var data = db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
pagination.records = total;
return data;
}
///
/// 返回Object
///
/// T-SQL语句
///
public object FindObject(string strSql)
{
return db.FindObject(strSql);
}
///
/// 返回Object
///
/// T-SQL语句
/// DbCommand参数
///
public object FindObject(string strSql, DbParameter[] dbParameter)
{
return db.FindObject(strSql, dbParameter);
}
#endregion
}
}