博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比较好的Dapper封装的仓储实现类 来源:https://www.cnblogs.com/liuchang/articles/4220671.html...
阅读量:7108 次
发布时间:2019-06-28

本文共 10185 字,大约阅读时间需要 33 分钟。

using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Net.Cache;using System.Text;using Dapper;using DapperExtensions;using TestData.Entity;using TestData.Business;namespace TestData.Business{    ///     /// 业务逻辑的基类  包含了一些简单的操作    ///     /// 
public abstract class BaseManager
where T : class, IDataEntity { ///
/// 查询所有 /// ///
public IEnumerable
GetAll() { using (var conn = ConnectionFactory.Connection) { return conn.GetList
(); } } ///
/// 根绝sql查询 /// ///
sql ///
参数列表 ///
public IEnumerable
SelectCommond(string sql, object parameters = null) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(sql, parameters); } } ///
/// 根据表明查询 /// ///
///
public IEnumerable
GetAll(string name) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(string.Format("select * from {0}", name)); } } ///
/// 根据编号查询 /// ///
///
public T GetById(int? id) { if (id == null) return default(T); using (var conn = ConnectionFactory.Connection) { return conn.Get
(id.Value); } } ///
/// 修改实体 /// ///
实体对象 ///
public bool Update(T t) { using (var conn = ConnectionFactory.Connection) { t.EditorDate = DateTime.Now; return conn.Update(t); } } ///
/// 得到数量 /// ///
public int GetCount() { using (var conn = ConnectionFactory.Connection) { return conn.Count
(null); } } ///
/// 分页 /// ///
///
///
///
public Tuple
> GetPaged(object predicate, int pageindex, int pageSize) { using (var conn = ConnectionFactory.Connection) { var sort = new List
{ Predicates.Sort
(p=>p.EditorDate) }; var total = conn.Count
(predicate); return new Tuple
>(total, conn.GetPage
(predicate, sort, pageindex, pageSize).ToList()); } } ///
/// 添加 /// ///
实体对象 ///
public bool Insert(T t) { t.EditorDate = DateTime.Now; return this.Add(t, false) == t.Id; } ///
/// 添加实体集合 /// ///
///
public bool Insert(List
list) { using (var conn = ConnectionFactory.Connection) { list.ForEach(p => p.EditorDate = DateTime.Now); return conn.Insert(list); } } ///
/// 添加实体 /// ///
实体对象 ///
///
public int Add(T t, bool isAutoGenId = true) { using (var conn = ConnectionFactory.Connection) { //var maxindex = conn.Query
(string.Format("select max(indexs) from {0}", typeof(T).Name)).FirstOrDefault() ?? 0; //t.Indexs = maxindex + 1; return conn.Insert(t, isGenId: isAutoGenId); } } ///
/// 根据编号删除 /// ///
///
public bool Delete(int? id) { var obj = this.GetById(id); if (obj == null) return false; return this.Update(obj); } ///
/// 根据编号修改 /// ///
///
///
public bool UpdataStatus(int? id) { var obj = this.GetById(id); if (obj == null) return false; return this.Update(obj); } ///
/// 根据外键得到数据 /// ///
外键名称 ///
外键的值 ///
public IEnumerable
GetByForeignKey(string foreignKeyName, Guid foreignKeyValue) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(string.Format("select * from {0} where {1}=@value", typeof(T).Name, foreignKeyName), new { value = foreignKeyValue }); } } ///
/// 根据列查询 /// ///
列名称 ///
列的值 ///
public IEnumerable
GetByField(string fieldName, dynamic fieldValue) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(string.Format("select * from {0} where {1}=@value", typeof(T).Name, fieldName), new { value = fieldValue }); } } ///
/// lxh 根据某列查询的方法--带排序 /// ///
查询列名 ///
条件内容 ///
排序列名 ///
public IEnumerable
GetByField(string fieldName, dynamic fieldValue, string sortFieldName) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(string.Format("select * from {0} where {1}=@value order by {2}", typeof(T).Name, fieldName, sortFieldName), new { value = fieldValue }); } } ///
/// lxh 获取排序号的方法 /// ///
public int GetNextSequence(T t) { using (var conn = ConnectionFactory.Connection) { return conn.Query
(string.Format("select isnull(max(Sequence),0)+1 from {0}", typeof(T).Name)).FirstOrDefault(); } } ///
/// 存储过程 /// ///
///
///
public List
SelectProc(string procName, object obj = null) { using (var conn = ConnectionFactory.Connection) { return conn.Query(procName, obj, commandType: CommandType.StoredProcedure).ToList(); } } }}

 

using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Net.Cache;using System.Text;using Dapper;using DapperExtensions;using TestData.Entity;using TestData.Business;

namespace TestData.Business{    /// <summary>    /// 业务逻辑的基类  包含了一些简单的操作    /// </summary>    /// <typeparam name="T"></typeparam>    public abstract class BaseManager<T> where T : class, IDataEntity    {        /// <summary>        /// 查询所有        /// </summary>        /// <returns></returns>        public IEnumerable<T> GetAll()        {            using (var conn = ConnectionFactory.Connection)            {                return conn.GetList<T>();            }        }
        /// <summary>        /// 根绝sql查询        /// </summary>        /// <param name="sql">sql</param>        /// <param name="parameters">参数列表</param>        /// <returns></returns>        public IEnumerable<T> SelectCommond(string sql, object parameters = null)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<T>(sql, parameters);            }        }        /// <summary>        /// 根据表明查询        /// </summary>        /// <param name="name"></param>        /// <returns></returns>        public IEnumerable<T> GetAll(string name)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<T>(string.Format("select * from {0}", name));            }        }        /// <summary>        /// 根据编号查询        /// </summary>        /// <param name="id"></param>        /// <returns></returns>        public T GetById(int? id)        {            if (id == null)                return default(T);            using (var conn = ConnectionFactory.Connection)            {
                return conn.Get<T>(id.Value);            }        }        /// <summary>        /// 修改实体        /// </summary>        /// <param name="t">实体对象</param>        /// <returns></returns>        public bool Update(T t)        {            using (var conn = ConnectionFactory.Connection)            {                t.EditorDate = DateTime.Now;                return conn.Update(t);            }        }
        /// <summary>        /// 得到数量        /// </summary>        /// <returns></returns>        public int GetCount()        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Count<T>(null);            }        }
        /// <summary>        /// 分页        /// </summary>        /// <param name="predicate"></param>        /// <param name="pageindex"></param>        /// <param name="pageSize"></param>        /// <returns></returns>        public Tuple<int, IEnumerable<T>> GetPaged(object predicate, int pageindex, int pageSize)        {            using (var conn = ConnectionFactory.Connection)            {                var sort = new List<ISort>                    {                        Predicates.Sort<T>(p=>p.EditorDate)                    };
                var total = conn.Count<T>(predicate);                return new Tuple<int, IEnumerable<T>>(total, conn.GetPage<T>(predicate, sort, pageindex, pageSize).ToList());            }        }        /// <summary>        /// 添加        /// </summary>        /// <param name="t">实体对象</param>        /// <returns></returns>        public bool Insert(T t)        {            t.EditorDate = DateTime.Now;            return this.Add(t, false) == t.Id;        }        /// <summary>        /// 添加实体集合        /// </summary>        /// <param name="list"></param>        /// <returns></returns>        public bool Insert(List<T> list)        {            using (var conn = ConnectionFactory.Connection)            {                list.ForEach(p => p.EditorDate = DateTime.Now);                return conn.Insert(list);            }        }
        /// <summary>        /// 添加实体        /// </summary>        /// <param name="t">实体对象</param>        /// <param name="isAutoGenId"></param>        /// <returns></returns>        public int Add(T t, bool isAutoGenId = true)        {            using (var conn = ConnectionFactory.Connection)            {                //var maxindex = conn.Query<int?>(string.Format("select max(indexs) from {0}", typeof(T).Name)).FirstOrDefault() ?? 0;                //t.Indexs = maxindex + 1;                return conn.Insert(t, isGenId: isAutoGenId);            }        }        /// <summary>        /// 根据编号删除        /// </summary>        /// <param name="id"></param>        /// <returns></returns>        public bool Delete(int? id)        {            var obj = this.GetById(id);            if (obj == null) return false;            return this.Update(obj);        }        /// <summary>        /// 根据编号修改        /// </summary>        /// <param name="id"></param>        /// <param name="mark"></param>        /// <returns></returns>        public bool UpdataStatus(int? id)        {            var obj = this.GetById(id);            if (obj == null) return false;            return this.Update(obj);        }        /// <summary>        /// 根据外键得到数据        /// </summary>        /// <param name="foreignKeyName">外键名称</param>        /// <param name="foreignKeyValue">外键的值</param>        /// <returns></returns>        public IEnumerable<T> GetByForeignKey(string foreignKeyName, Guid foreignKeyValue)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<T>(string.Format("select * from {0} where {1}=@value", typeof(T).Name, foreignKeyName), new { value = foreignKeyValue });            }        }        /// <summary>        /// 根据列查询        /// </summary>        /// <param name="fieldName">列名称</param>        /// <param name="fieldValue">列的值</param>        /// <returns></returns>        public IEnumerable<T> GetByField(string fieldName, dynamic fieldValue)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<T>(string.Format("select * from {0} where {1}=@value", typeof(T).Name, fieldName), new { value = fieldValue });            }        }        /// <summary>        /// lxh 根据某列查询的方法--带排序        /// </summary>        /// <param name="fieldName">查询列名</param>        /// <param name="fieldValue">条件内容</param>        /// <param name="sortFieldName">排序列名</param>        /// <returns></returns>        public IEnumerable<T> GetByField(string fieldName, dynamic fieldValue, string sortFieldName)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<T>(string.Format("select * from {0} where {1}=@value order by {2}", typeof(T).Name, fieldName, sortFieldName), new { value = fieldValue });            }        }
        /// <summary>        /// lxh 获取排序号的方法        /// </summary>        /// <returns></returns>        public int GetNextSequence(T t)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query<int>(string.Format("select isnull(max(Sequence),0)+1 from {0}", typeof(T).Name)).FirstOrDefault();            }        }        /// <summary>        /// 存储过程        /// </summary>        /// <param name="procName"></param>        /// <param name="obj"></param>        /// <returns></returns>        public List<dynamic> SelectProc(string procName, object obj = null)        {            using (var conn = ConnectionFactory.Connection)            {                return conn.Query(procName, obj, commandType: CommandType.StoredProcedure).ToList();            }        }    }}

转载于:https://www.cnblogs.com/MasterLin/p/10146030.html

你可能感兴趣的文章
移动端模拟滚动
查看>>
webpack4.17.1起步
查看>>
linux user xxx is not allowed to execute '/bin/su'
查看>>
Meteor部署问题汇总
查看>>
SpringMVC集成Swagger
查看>>
Kafka 文档(介绍)
查看>>
antd 和 element上传文件详解与FormData详解
查看>>
746. Min Cost Climbing Stairs
查看>>
如何利用极光推送的新功能玩转世界杯营销
查看>>
一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成
查看>>
【Linux】执行 service iptables save 命令异常解决
查看>>
Centos 7 安装 ffmpeg 3.1
查看>>
我的 Vue.js 学习日记 (一)
查看>>
JSONP跨域
查看>>
如何用 CSS + HTML + JS 创建桌面应用
查看>>
前端如何让网页打印时每一页都有固定的头部,且在达到固定高度时自动分页...
查看>>
WPF:Animation动画--KeyFramesExample帧动画(2)
查看>>
FFMPEG vaapi_encoder 源码阅读
查看>>
h5实现移动端图片预览器(一)
查看>>
支付-收款
查看>>