498 lines
19 KiB
C#
498 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using Dapper;
|
|
using Learun.Util;
|
|
|
|
namespace Learun.DataBase.Repository
|
|
{
|
|
/// <summary>
|
|
/// 仓储类。
|
|
/// </summary>
|
|
public class Repository : IRepository
|
|
{
|
|
/// <summary>
|
|
/// 有点类似于全局的一个where条件
|
|
/// </summary>
|
|
private DbWhere dbWhere = (DbWhere)WebHelper.GetHttpItems("DataAhthorCondition");
|
|
|
|
public IDatabase db;
|
|
|
|
public Repository(IDatabase idatabase)
|
|
{
|
|
this.db = idatabase;
|
|
}
|
|
|
|
public DbConnection getDbConnection()
|
|
{
|
|
return this.db.getDbConnection();
|
|
}
|
|
|
|
public IRepository BeginTrans()
|
|
{
|
|
this.db.BeginTrans();
|
|
return this;
|
|
}
|
|
|
|
public void Commit()
|
|
{
|
|
this.db.Commit();
|
|
}
|
|
|
|
public void Rollback()
|
|
{
|
|
this.db.Rollback();
|
|
}
|
|
|
|
public int ExecuteBySql(string strSql)
|
|
{
|
|
return this.db.ExecuteBySql(strSql);
|
|
}
|
|
|
|
public int ExecuteBySql(string strSql, object dbParameter)
|
|
{
|
|
return this.db.ExecuteBySql(strSql, dbParameter);
|
|
}
|
|
|
|
public int ExecuteByProc(string procName)
|
|
{
|
|
return this.db.ExecuteByProc(procName);
|
|
}
|
|
|
|
public int ExecuteByProc(string procName, object dbParameter)
|
|
{
|
|
return this.db.ExecuteByProc(procName, dbParameter);
|
|
}
|
|
|
|
public T ExecuteByProc<T>(string procName) where T : class
|
|
{
|
|
return this.db.ExecuteByProc<T>(procName);
|
|
}
|
|
|
|
public T ExecuteByProc<T>(string procName, object dbParameter) where T : class
|
|
{
|
|
return this.db.ExecuteByProc<T>(procName, dbParameter);
|
|
}
|
|
|
|
public IEnumerable<T> QueryByProc<T>(string procName) where T : class
|
|
{
|
|
return this.db.QueryByProc<T>(procName);
|
|
}
|
|
|
|
public IEnumerable<T> QueryByProc<T>(string procName, object dbParameter) where T : class
|
|
{
|
|
return this.db.QueryByProc<T>(procName, dbParameter);
|
|
}
|
|
|
|
public int Insert<T>(T entity) where T : class
|
|
{
|
|
return this.db.Insert<T>(entity);
|
|
}
|
|
|
|
public int InsertByNoMap<T>(T entity, string tablename) where T : class
|
|
{
|
|
return this.db.InsertByNoMap<T>(entity, tablename);
|
|
}
|
|
public int InsertByNoMap<T>(List<T> entities, string tablename) where T : class
|
|
{
|
|
return this.db.InsertByNoMap<T>(entities, tablename);
|
|
}
|
|
public int Insert<T>(List<T> entity) where T : class
|
|
{
|
|
return this.db.Insert<T>(entity);
|
|
}
|
|
|
|
public int Delete<T>(T entity) where T : class
|
|
{
|
|
return this.db.Delete<T>(entity);
|
|
}
|
|
|
|
public int Delete<T>(List<T> entity) where T : class
|
|
{
|
|
return this.db.Delete<T>(entity);
|
|
}
|
|
|
|
public int Delete<T>(Expression<Func<T, bool>> condition) where T : class, new()
|
|
{
|
|
return this.db.Delete<T>(condition);
|
|
}
|
|
|
|
public int Update<T>(T entity) where T : class
|
|
{
|
|
return this.db.Update<T>(entity);
|
|
}
|
|
|
|
public int UpdateByNoMap<T>(T entity, string tablename, string pkcolumn) where T : class
|
|
{
|
|
return this.db.UpdateByNoMap<T>(entity, tablename, pkcolumn);
|
|
}
|
|
|
|
public int UpdateByNoMap<T>(List<T> entities, string tablename, string pkcolumn) where T : class
|
|
{
|
|
return this.db.UpdateByNoMap<T>(entities, tablename, pkcolumn);
|
|
}
|
|
|
|
public int UpdateEx<T>(T entity) where T : class
|
|
{
|
|
return this.db.UpdateEx<T>(entity);
|
|
}
|
|
|
|
public int Update<T>(List<T> entity) where T : class
|
|
{
|
|
return this.db.Update<T>(entity);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 仓储下的方法。根据主键找一个实体
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="keyValue"></param>
|
|
/// <returns></returns>
|
|
public T FindEntity<T>(object keyValue) where T : class
|
|
{
|
|
return this.db.FindEntity<T>(keyValue);
|
|
}
|
|
|
|
public T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new()
|
|
{
|
|
return this.db.FindEntity<T>(condition);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 仓储下的方法。
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="strSql"></param>
|
|
/// <param name="dbParameter"></param>
|
|
/// <returns></returns>
|
|
public T FindEntity<T>(string strSql, object dbParameter) where T : class, new()
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
return this.db.FindEntity<T>(strSql, dynamicParameters);
|
|
}
|
|
return this.db.FindEntity<T>(strSql, dbParameter);
|
|
}
|
|
|
|
public IQueryable<T> IQueryable<T>() where T : class, new()
|
|
{
|
|
return this.db.IQueryable<T>();
|
|
}
|
|
|
|
public IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class, new()
|
|
{
|
|
return this.db.IQueryable<T>(condition);
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>() where T : class, new()
|
|
{
|
|
return this.db.FindList<T>();
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(string strSql) where T : class
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dbParameter = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
return this.db.FindList<T>(strSql, dbParameter);
|
|
}
|
|
return this.db.FindList<T>(strSql);
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(string strSql, object dbParameter) where T : class
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
return this.db.FindList<T>(strSql, dynamicParameters);
|
|
}
|
|
return this.db.FindList<T>(strSql, dbParameter);
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(Pagination pagination) where T : class, new()
|
|
{
|
|
int records = pagination.records;
|
|
if (string.IsNullOrEmpty(pagination.sidx))
|
|
{
|
|
pagination.sidx = "";
|
|
pagination.sord = "asc";
|
|
}
|
|
IEnumerable<T> arg_6B_0 = this.db.FindList<T>(pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_6B_0;
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
|
|
{
|
|
int records = pagination.records;
|
|
if (string.IsNullOrEmpty(pagination.sidx))
|
|
{
|
|
pagination.sidx = "";
|
|
pagination.sord = "asc";
|
|
}
|
|
IEnumerable<T> arg_6C_0 = this.db.FindList<T>(condition, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_6C_0;
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new()
|
|
{
|
|
return this.db.FindList<T>(condition);
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class
|
|
{
|
|
int records = pagination.records;
|
|
if (string.IsNullOrEmpty(pagination.sidx))
|
|
{
|
|
pagination.sidx = "";
|
|
pagination.sord = "asc";
|
|
}
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dbParameter = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
IEnumerable<T> arg_E3_0 = this.db.FindList<T>(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_E3_0;
|
|
}
|
|
IEnumerable<T> arg_126_0 = this.db.FindList<T>(strSql, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_126_0;
|
|
}
|
|
|
|
public IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class
|
|
{
|
|
int records = pagination.records;
|
|
if (string.IsNullOrEmpty(pagination.sidx))
|
|
{
|
|
pagination.sidx = "";
|
|
pagination.sord = "asc";
|
|
}
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
IEnumerable<T> arg_EA_0 = this.db.FindList<T>(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_EA_0;
|
|
}
|
|
IEnumerable<T> arg_12E_0 = this.db.FindList<T>(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
pagination.records = records;
|
|
return arg_12E_0;
|
|
}
|
|
|
|
public DataTable FindTable(string strSql)
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
return this.db.FindTable(strSql, SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters));
|
|
}
|
|
return this.db.FindTable(strSql);
|
|
}
|
|
|
|
public DataTable FindTable(string strSql, object dbParameter)
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
return this.db.FindTable(strSql, dynamicParameters);
|
|
}
|
|
return this.db.FindTable(strSql, dbParameter);
|
|
}
|
|
|
|
public DataTable FindTable(string strSql, Pagination pagination)
|
|
{
|
|
int records = pagination.records;
|
|
DataTable result;
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dbParameter = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
result = this.db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
}
|
|
else
|
|
{
|
|
result = this.db.FindTable(strSql, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
}
|
|
pagination.records = records;
|
|
return result;
|
|
}
|
|
|
|
public DataTable FindTable(string strSql, object dbParameter, Pagination pagination)
|
|
{
|
|
int records = pagination.records;
|
|
DataTable result;
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
result = this.db.FindTable(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
}
|
|
else
|
|
{
|
|
result = this.db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc", pagination.rows, pagination.page, out records);
|
|
}
|
|
pagination.records = records;
|
|
return result;
|
|
}
|
|
|
|
public object FindObject(string strSql)
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dbParameter = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
return this.db.FindObject(strSql, dbParameter);
|
|
}
|
|
return this.db.FindObject(strSql);
|
|
}
|
|
|
|
public object FindObject(string strSql, object dbParameter)
|
|
{
|
|
if (this.dbWhere != null)
|
|
{
|
|
int num = strSql.ToUpper().IndexOf("ORDER BY");
|
|
if (num > 0)
|
|
{
|
|
strSql = strSql.Substring(0, num);
|
|
string arg = strSql.Substring(num);
|
|
strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, this.dbWhere.sql, arg);
|
|
}
|
|
else
|
|
{
|
|
strSql = string.Format(" select * From ({0})t Where {1} ", strSql, this.dbWhere.sql);
|
|
}
|
|
DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(this.dbWhere.dbParameters);
|
|
dynamicParameters.AddDynamicParams(dbParameter);
|
|
return this.db.FindObject(strSql, dynamicParameters);
|
|
}
|
|
return this.db.FindObject(strSql, dbParameter);
|
|
}
|
|
|
|
public IEnumerable<T> GetDBTable<T>() where T : class, new()
|
|
{
|
|
return this.db.GetDBTable<T>();
|
|
}
|
|
|
|
public IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class, new()
|
|
{
|
|
return this.db.GetDBTableFields<T>(tableName);
|
|
}
|
|
}
|
|
}
|