62,041
社区成员
发帖
与我相关
我的任务
分享
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapDelete();
endpoints.MapPost()
});
看见微软做的事情了么?
那么你非要的万能,统一。可以开始照猫画虎了把
DAL.Use实体(endpoints =>
{
endpoints.映射所有实体
endpoints.映射所有删除;
endpoints.映射所有update
});
把所有操作都加入到pipeline里,让你的数据在pipeline自然流动
当然我前面也说,本来我不推荐netcore这个,因为他的目标大,实现庞杂。你现在入手恐怕难得理解
所以我前面给你了一个相对简单干净的pipeline,我们的目的很简单,我们自动把所有处理节点加入pipeline,然后把你要处理的数据丢到这个“数据处理管道里”让他自然流动就好(当然这个pipeline目标简单,并没有像netcore自己那个,中间加入了路由节点控制)
public interface IRepository
{
#region 连接信息
/// <summary>
/// 获取连接上下文
/// </summary>
/// <returns></returns>
DbConnection getDbConnection();
#endregion
#region 事务
/// <summary>
/// 开始事务
/// </summary>
/// <returns></returns>
IRepository BeginTrans();
/// <summary>
/// 提交
/// </summary>
void Commit();
/// <summary>
/// 回滚
/// </summary>
void Rollback();
#endregion
#region 执行 SQL 代码
/// <summary>
/// 执行sql语句
/// </summary>
/// <param name="strSql">sql语句</param>
/// <returns></returns>
int ExecuteBySql(string strSql);
/// <summary>
/// 执行sql语句
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
int ExecuteBySql(string strSql, object dbParameter);
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <returns></returns>
int ExecuteByProc(string procName);
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
int ExecuteByProc(string procName, object dbParameter);
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <returns></returns>
T ExecuteByProc<T>(string procName) where T : class;
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
T ExecuteByProc<T>(string procName, object dbParameter) where T : class;
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <returns></returns>
IEnumerable<T> QueryByProc<T>(string procName) where T : class;
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
IEnumerable<T> QueryByProc<T>(string procName, object dbParameter) where T : class;
#endregion
#region 对象实体 添加、修改、删除
/// <summary>
/// 插入实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entity">实体数据</param>
/// <returns></returns>
int Insert<T>(T entity) where T : class;
/// <summary>
/// 批量插入实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entities">实体数据列表</param>
/// <returns></returns>
int Insert<T>(List<T> entity) where T : class;
/// <summary>
/// 删除实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entity">实体数据(需要主键赋值)</param>
/// <returns></returns>
int Delete<T>(T entity) where T : class;
/// <summary>
/// 批量删除实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entities">实体数据列表</param>
/// <returns></returns>
int Delete<T>(List<T> entity) where T : class;
/// <summary>
/// 删除表数据(根据Lambda表达式)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="condition"></param>
/// <returns></returns>
int Delete<T>(Expression<Func<T, bool>> condition) where T : class,new();
/// <summary>
/// 更新实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entity">实体数据</param>
/// <returns></returns>
int Update<T>(T entity) where T : class;
/// <summary>
/// 更新实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entity">实体数据</param>
/// <returns></returns>
int UpdateEx<T>(T entity) where T : class;
/// <summary>
/// 批量更新实体数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="entities">实体数据列表</param>
/// <returns></returns>
int Update<T>(List<T> entity) where T : class;
#endregion
#region 对象实体 查询
/// <summary>
/// 查找一个实体根据主键
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="KeyValue">主键</param>
/// <returns></returns>
T FindEntity<T>(object keyValue) where T : class;
/// <summary>
/// 查找一个实体(根据表达式)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="condition">表达式</param>
/// <returns></returns>
T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class,new();
/// <summary>
/// 查找一个实体(根据sql)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
T FindEntity<T>(string strSql, object dbParameter) where T : class,new();
/// <summary>
/// 获取IQueryable表达式
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <returns></returns>
IQueryable<T> IQueryable<T>() where T : class,new();
/// <summary>
/// 获取IQueryable表达式(根据表达式)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="condition">表达式</param>
/// <returns></returns>
IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class,new();
/// <summary>
/// 查询列表(获取表所有数据)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <returns></returns>
IEnumerable<T> FindList<T>() where T : class,new();
/// <summary>
/// 查询列表根据sql语句
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strSql">sql语句</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(string strSql) where T : class;
/// <summary>
/// 查询列表根据sql语句(带参数)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(string strSql, object dbParameter) where T : class;
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(Pagination pagination) where T : class,new();
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="condition">表达式</param>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class,new();
/// <summary>
/// 查询数据
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="condition">表达式</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class,new();
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strSql">SQL语句</param>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class;
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strSql">SQL语句</param>
/// <param name="dbParameter">参数</param>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class;
#endregion
#region 数据源查询
/// <summary>
/// 查询数据
/// </summary>
/// <param name="strSql">sql语句</param>
/// <returns></returns>
DataTable FindTable(string strSql);
/// <summary>
/// 查询数据
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
DataTable FindTable(string strSql, object dbParameter);
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
DataTable FindTable(string strSql, Pagination pagination);
/// <summary>
/// 查询列表(分页)
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <param name="pagination">分页数据</param>
/// <returns></returns>
DataTable FindTable(string strSql,object dbParameter, Pagination pagination);
/// <summary>
/// 获取查询对象
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns></returns>
object FindObject(string strSql);
/// <summary>
/// 获取查询对象
/// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="dbParameter">参数</param>
/// <returns></returns>
object FindObject(string strSql, object dbParameter);
#endregion
#regio
//保存数据的通用比较好写
public class CRUDDao
{
public static ResultMsg UpdateSave<T>(T inputData,bool checkSave) where T : class
{
ResultMsg resultMsg = new ResultMsg();
try
{
if (checkSave)
{
int result = FreeSqlHelper.DB.Update<T>(inputData).ExecuteAffrows();
if (result != 0)
{
resultMsg.Status = StatusEnum.Succeed;
resultMsg.Message = $"PostEditSave({typeof(T).Name}) Succeed:保存{result}条数据!";
}
}
}
catch (Exception ex)
{
resultMsg.Status = StatusEnum.Error;
resultMsg.Message = $"PostEditSave({typeof(T).Name})Error:{ex.Message} ";
}
public class CRUDLogic
{
public virtual ResultMsg UpdateSave<T>(T inputData) where T : class
{
return CRUDDao.UpdateSave<T>(inputData, true);
}
}
public class AATestLogic
{
public override ResultMsg UpdateSave<ComboItems>(ComboItems inputData)
{
return null;
}
}
//接口入处
[HttpPost("PostUpdateSave")]
public ResultMsg PostUpdateSave<T>([FromBody] T inputData) where T : class
{
CRUDLogic crudLogic = new CRUDLogic();
return crudLogic.UpdateSave<T>(inputData);
}
进CRUDLogic还是AATestLogic怎么分辨
//保存数据的通用比较好写
public class CRUDDao
{
public static ResultMsg UpdateSave<T>(T inputData,bool checkSave) where T : class
{
ResultMsg resultMsg = new ResultMsg();
try
{
if (checkSave)
{
int result = FreeSqlHelper.DB.Update<T>(inputData).ExecuteAffrows();
if (result != 0)
{
resultMsg.Status = StatusEnum.Succeed;
resultMsg.Message = $"PostEditSave({typeof(T).Name}) Succeed:保存{result}条数据!";
}
}
}
catch (Exception ex)
{
resultMsg.Status = StatusEnum.Error;
resultMsg.Message = $"PostEditSave({typeof(T).Name})Error:{ex.Message} ";
}
public class CRUDLogic
{
public virtual ResultMsg UpdateSave<T>(T inputData) where T : class
{
return CRUDDao.UpdateSave<T>(inputData, true);
}
}
public class AATestLogic
{
public override ResultMsg UpdateSave<ComboItems>(ComboItems inputData)
{
return null;
}
}
//接口入处
[HttpPost("PostUpdateSave")]
public ResultMsg PostUpdateSave<T>([FromBody] T inputData) where T : class
{
CRUDLogic crudLogic = new CRUDLogic();
return crudLogic.UpdateSave<T>(inputData);
}
进CRUDLogic还是AATestLogic怎么分辨[/quote]
你不是在
CRUDLogic crudLogic = new CRUDLogic();
return crudLogic.UpdateSave<T>(inputData);
中已经明确知道是哪个logic了吗