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 interface IRepository where T : class,new()
{
///
/// 开始事务
///
///
IRepository BeginTrans();
///
/// 提交
///
void Commit();
///
/// 回滚
///
void Rollback();
///
/// 执行T-SQL
///
/// sql语句
///
int ExecuteBySql(string strSql);
///
/// 执行T-SQL
///
/// sql语句
/// DbCommand参数
///
int ExecuteBySql(string strSql, params DbParameter[] dbParameter);
///
/// 执行存储过程
///
/// 存储过程名称
///
int ExecuteByProc(string procName);
///
/// 执行存储过程
///
/// 存储过程名称
/// DbCommand参数
///
int ExecuteByProc(string procName, params DbParameter[] dbParameter);
///
/// 插入一条数据
///
/// 对象实体
///
int Insert(T entity);
///
/// 批量插入数据
///
/// 对象实体集合
///
int Insert(List entity);
///
/// 删除
///
///
int Delete();
///
/// 删除一条数据
///
/// 对象实体
///
int Delete(T entity);
///
/// 批量删除
///
/// 对象实体集合
///
int Delete(List entity);
///
/// 根据条件删除数据
///
/// 条件
///
int Delete(Expression> condition);
///
/// 根据主键删除一条数据
///
/// 主键
///
int Delete(object keyValue);
///
/// 根据主键批量删除一条数据
///
/// 主键数组
///
int Delete(object[] keyValue);
///
/// 根据属性删除
///
/// 属性值
/// 属性名
///
int Delete(object propertyValue, string propertyName);
///
/// 更新一条数据
///
/// 实体对象
///
int Update(T entity);
///
/// 批量更新
///
/// 实体对象集合
///
int Update(List entity);
///
/// 根据条件更新
///
/// 条件
///
int Update(Expression> condition);
///
/// 批量修改
///
/// 要修改的列及修改后列的值集合
/// 修改的条件
/// 修改列的名称的集合
/// 返回受影响行数
int Modify(T modelModifyProps, Expression> where, params string[] paramModifyNames);
///
/// 根据主键获取一条数据
///
/// 主键值
///
T FindEntity(object keyValue);
///
/// 根据条件获取一条数据
///
///
///
T FindEntity(Expression> condition);
///
/// 获取IQueryable对象
///
///
IQueryable IQueryable();
///
/// 根据条件获取IQueryable对象
///
///
///
IQueryable IQueryable(Expression> condition);
///
/// 根据T-SQL语句获取一条数据,返回对象集合
///
/// T-SQL语句
///
IEnumerable FindList(string strSql);
///
/// 根据T-SQL语句获取一条数据,返回对象集合
///
/// T-SQL语句
/// DbCommand参数
///
IEnumerable FindList(string strSql, DbParameter[] dbParameter);
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// 分页参数
///
IEnumerable FindList(Pagination pagination);
///
/// 根据分页参数、条件获取一条数据,返回对象集合
///
/// 条件
/// 分页参数
///
IEnumerable FindList(Expression> condition, Pagination pagination);
///
/// 根据条件获取一条数据,返回对象集合
///
/// 条件
///
IEnumerable FindList(Expression> condition);
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// T-SQL语句
/// 分页参数
///
IEnumerable FindList(string strSql, Pagination pagination);
///
/// 根据分页参数获取一条数据,返回对象集合
///
/// T-SQL语句
/// DbCommand参数
/// 分页参数
///
IEnumerable FindList(string strSql, DbParameter[] dbParameter, Pagination pagination);
///
/// 根据条件获取分页数据
///
///
/// 条件
/// 排序字段
/// 是否升序
/// 每页条数
/// 索引
/// 总记录
///
IEnumerable FindList(Expression> condition, string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class, new();
///
/// 返回DataTable
///
/// T-SQL语句
///
DataTable FindTable(string strSql);
///
/// 返回DataTable
///
/// T-SQL语句
/// DbCommand参数
///
DataTable FindTable(string strSql, DbParameter[] dbParameter);
///
/// 返回DataTable
///
/// T-SQL语句
/// 分页参数
///
DataTable FindTable(string strSql, Pagination pagination);
///
/// 返回DataTable
///
/// T-SQL语句
/// DbCommand参数
/// 分页参数
///
DataTable FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination);
///
/// 返回Object
///
/// T-SQL语句
///
object FindObject(string strSql);
///
/// 返回Object
///
/// T-SQL语句
/// DbCommand参数
///
object FindObject(string strSql, DbParameter[] dbParameter);
}
}