比较好的Dapper封装的仓储实现类 来源:https://www.cnblogs.com/liuchang/articles/4220671.html...

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();
            }
        }
    }
}

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值