using System;
using System.Text;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using YiSha.Util;
using YiSha.Util.Model;
namespace YiSha.Data.Repository
{
///
/// 创建人:admin
/// 日 期:2018.10.18
/// 描 述:定义仓储模型中的数据标准操作接口
///
public class Repository
{
#region 构造函数
public IDatabase db;
public Repository(IDatabase iDatabase)
{
this.db = iDatabase;
}
#endregion
#region 事务提交
public async Task BeginTrans()
{
await db.BeginTrans();
return this;
}
public async Task CommitTrans()
{
return await db.CommitTrans();
}
public async Task RollbackTrans()
{
await db.RollbackTrans();
}
#endregion
#region 执行 SQL 语句
public async Task ExecuteBySql(string strSql)
{
return await db.ExecuteBySql(strSql);
}
public async Task ExecuteBySql(string strSql, params DbParameter[] dbParameter)
{
return await db.ExecuteBySql(strSql, dbParameter);
}
public async Task ExecuteByProc(string procName)
{
return await db.ExecuteByProc(procName);
}
public async Task ExecuteByProc(string procName, params DbParameter[] dbParameter)
{
return await db.ExecuteByProc(procName, dbParameter);
}
#endregion
#region 对象实体 添加、修改、删除
public async Task Insert(T entity) where T : class
{
return await db.Insert(entity);
}
public async Task Insert(List entity) where T : class
{
return await db.Insert(entity);
}
public async Task Delete() where T : class
{
return await db.Delete();
}
public async Task Delete(T entity) where T : class
{
return await db.Delete(entity);
}
public async Task Delete(List entity) where T : class
{
return await db.Delete(entity);
}
public async Task Delete(Expression> condition) where T : class, new()
{
return await db.Delete(condition);
}
public async Task Delete(string id) where T : class
{
return await db.Delete(id);
}
public async Task Delete(string[] id) where T : class
{
return await db.Delete(id);
}
public async Task Delete(string propertyName, string propertyValue) where T : class
{
return await db.Delete(propertyName, propertyValue);
}
public async Task Update(T entity) where T : class
{
return await db.Update(entity);
}
public async Task Update(List entity) where T : class
{
return await db.Update(entity);
}
public async Task UpdateAllField(T entity) where T : class
{
return await db.UpdateAllField(entity);
}
public async Task Update(Expression> condition) where T : class, new()
{
return await db.Update(condition);
}
public IQueryable IQueryable(Expression> condition) where T : class, new()
{
return db.IQueryable(condition);
}
#endregion
#region 对象实体 查询
public async Task FindEntity(int id) where T : class
{
return await db.FindEntity(id);
}
public async Task FindEntity(Expression> condition) where T : class, new()
{
return await db.FindEntity(condition);
}
public async Task> FindList() where T : class, new()
{
return await db.FindList();
}
public async Task> FindList(Expression> condition) where T : class, new()
{
return await db.FindList(condition);
}
public async Task> FindList(string strSql) where T : class
{
return await db.FindList(strSql);
}
public async Task> FindList(string strSql, DbParameter[] dbParameter) where T : class
{
return await db.FindList(strSql, dbParameter);
}
public async Task<(int total, IEnumerable list)> FindList(Pagination pagination) where T : class, new()
{
int total = pagination.TotalCount;
var data = await db.FindList(pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = total;
return data;
}
public async Task> FindList(Expression> condition, Pagination pagination) where T : class, new()
{
var data = await db.FindList(condition, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = data.total;
return data.list;
}
public async Task<(int total, IEnumerable list)> FindList(string strSql, Pagination pagination) where T : class
{
int total = pagination.TotalCount;
var data = await db.FindList(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = total;
return data;
}
public async Task> FindList(string strSql, DbParameter[] dbParameter, Pagination pagination) where T : class
{
var data = await db.FindList(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = data.total;
return data.Item2;
}
#endregion
#region 数据源 查询
public async Task FindTable(string strSql)
{
return await db.FindTable(strSql);
}
public async Task FindTable(string strSql, DbParameter[] dbParameter)
{
return await db.FindTable(strSql, dbParameter);
}
public async Task FindTable(string strSql, Pagination pagination)
{
var data = await db.FindTable(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = data.total;
return data.Item2;
}
public async Task FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination)
{
var data = await db.FindTable(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
pagination.TotalCount = data.total;
return data.Item2;
}
public async Task