在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#数据库操作 → Dapper从入门到精通(PDF+源码+数据库)

Dapper从入门到精通(PDF+源码+数据库)

C#数据库操作

下载此实例
  • 开发语言:C#
  • 实例大小:1.44M
  • 下载次数:86
  • 浏览次数:3044
  • 发布时间:2016-01-26
  • 实例类别:C#数据库操作
  • 发 布 人:sunday
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Dapper

实例介绍

【实例简介】

Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll.

2,Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
3,Dapper支持什么数据库。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库,当然如果你知道原理也可以让它支持Mongo db
4,Dapper的r支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用。无XML无属性。代码以前怎么写现在还怎么写。
5,Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。性能实在高高高。
6,Dapper支持net2.0,3.0,3.5,4.0。【如果想在Net2.0下使用,可以去网上找一下Net2.0下如何配置运行Net3.5即可。】
7,Dapper语法十分简单。并且无须迁就数据库的设计。
开源网址: http://code.google.com/p/dapper-dot-net/

【实例截图】

【核心代码】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using Dapper;

namespace Dapper
{
    public class crud : b_base
    {
        public crud()
        {

        }

        #region 手写Sql插入数据
        /// <summary>
        /// 手写Sql插入数据
        /// </summary>
        public int InsertWithSql()
        {
            using (var conn = Connection)
            {
                string _sql = "INSERT INTO t_department(departmentname,introduce,[enable])VALUES('应用开发部SQL','应用开发部主要开始公司的应用平台',1)";
                conn.Open();
                return conn.Execute(_sql);
            }
        }
        #endregion

        #region 实体插入数据
        /// <summary>
        /// 实体插入数据
        /// </summary>
        public int? InsertWithEntity()
        {
            using (var conn = Connection)
            {
                var _entity = new t_department { departmentname = "应用开发部ENTITY", introduce = "应用开发部主要开始公司的应用平台" };
                conn.Open();
                return conn.Insert(_entity);
            }
        }
        #endregion

        #region 在IDBconnection中使用事务
        /// <summary>
        /// 在IDBconnection中使用事务
        /// </summary>
        /// <returns></returns>
        public bool InsertWithTran()
        {
            using (var conn = Connection)
            {
                int _departmentid = 0, _employeeid = 0, _rnum = 0;
                var _departmentname = new t_department { departmentname = "应用开发部ENTITY", introduce = "应用开发部主要开始公司的应用平台" };
                var _employee = new t_employee { displayname = "Micro", email = "1441299@qq.com", loginname = "Micro", password = "66778899", mobile = "123456789" };
                conn.Open();
                var _tran = conn.BeginTransaction();
                try
                {
                    _departmentid = conn.Insert(_departmentname, transaction: _tran).Value;
                      _rnum;
                    _employeeid = conn.Insert(_employee, transaction: _tran).Value;
                      _rnum;
                    conn.Insert(new t_derelation { departmentid = _departmentid, employeeid = _employeeid }, transaction: _tran);
                      _rnum;
                    _tran.Commit();
                }
                catch
                {
                    _rnum = 0;
                    _tran.Rollback();
                }
                return _rnum > 0;
            }
        }
        #endregion

        #region 在存储过程中使用事务
        /// <summary>
        /// 在存储过程中使用事务
        /// </summary>
        /// <returns></returns>
        public bool InsertWithProcTran()
        {
            var _parameter = new DynamicParameters();
            _parameter.Add("departmentname", "外网开发部门");
            _parameter.Add("introduce", "外网开发部门负责外部网站的更新");
            _parameter.Add("displayname", "夏季冰点");
            _parameter.Add("loginname", "Micro");
            _parameter.Add("password", "123456789");
            _parameter.Add("mobile", "1122334455");
            _parameter.Add("email", "123456789@qq.com");
            using (var _conn = Connection)
            {
                _conn.Open();
                return
                    _conn.Query<bool>("p_Insertdata", _parameter, commandType: CommandType.StoredProcedure)
                        .FirstOrDefault();
            }
        }
        #endregion

        #region 查询所有员工信息方法一
        /// <summary>
        /// 查询所有员工信息方法一
        /// </summary>
        /// <returns></returns>
        public IEnumerable<t_employee> GetemployeeListFirst()
        {
            string _sql = "SELECT * FROM t_employee";
            using (var _conn = Connection)
            {
                _conn.Open();
                return _conn.Query<t_employee>(_sql);
            }
        }
        #endregion

        #region 查询所有员工信息方法二
        /// <summary>
        /// 查询所有员工信息
        /// </summary>
        /// <returns></returns>
        public IEnumerable<t_employee> GetemployeeListSecond()
        {
            using (var _conn = Connection)
            {
                _conn.Open();
                return _conn.GetList<t_employee>();
            }
        }
        #endregion

        #region 获取某位员工的信息方法一
        /// <summary>
        /// 获取某位员工的信息方法一
        /// </summary>
        /// <param name="employeeid"></param>
        /// <returns></returns>
        public t_employee GetemployeeFirst(int employeeid)
        {
            string _sql = "SELECT * FROM t_employee where employeeid=@pemployeeid";
            using (var _conn = Connection)
            {
                _conn.Open();
                return _conn.Query<t_employee>(_sql, new { pemployeeid = employeeid }).FirstOrDefault();
            }
        }
        #endregion

        #region 获取某位员工的信息方法二
        /// <summary>
        /// 获取某位员工的信息方法二
        /// </summary>
        /// <param name="employeeid"></param>
        /// <returns></returns>
        public t_employee GetemployeetSecond(int employeeid)
        {
            using (var _conn = Connection)
            {
                _conn.Open();
                return _conn.Get<t_employee>(employeeid);
            }
        }
        #endregion

        #region 获取某位员工的信息方法三
        /// <summary>
        /// 获取某位员工的信息方法三
        /// </summary>
        /// <param name="pemployeeid"></param>
        /// <returns></returns>
        public t_employee Getemployeethird(int pemployeeid)
        {
            using (var _conn = Connection)
            {
                _conn.Open();
                return _conn.GetList<t_employee>(new { employeeid = pemployeeid }).FirstOrDefault();
            }
        }
        #endregion

        #region 多表查询(获取部门&员工信息)
        /// <summary>
        /// 多表查询(获取部门&员工信息)
        /// </summary>
        public void GetMultiEntity()
        {
            string _sql = "SELECT * FROM t_department AS a;SELECT * FROM t_employee AS a";
            using (var _conn = Connection)
            {
                var _grid = _conn.QueryMultiple(_sql);
                var _department = _grid.Read<t_department>();
                var _employee = _grid.Read<t_employee>();
            }
        }
        #endregion

        #region 父子关系查询
        /// <summary>
        /// 父子关系查询
        /// </summary>
        public IEnumerable<t_department> GetPCEntity()
        {
            string _sql = "SELECT * FROM t_department AS a;"  
                          "SELECT * FROM t_employee AS a;"  
                          "SELECT * FROM t_derelation;";
            using (var _conn = Connection)
            {
                var grid = _conn.QueryMultiple(_sql);
                var _department = grid.Read<t_department>();
                var _employee = grid.Read<t_employee>();
                var _derelation = grid.Read<t_derelation>();
                foreach (var tDepartment in _department)
                {
                    tDepartment.ListEmployees = _employee.Join(_derelation.Where(v => v.departmentid == tDepartment.departmentid), p => p.employeeid, r => r.employeeid, (p, r) => p);
                }
                return _department;
            }
        }
        #endregion

        #region 简单分页查询
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="pstart"></param>
        /// <param name="pend"></param>
        /// <returns></returns>
        public IEnumerable<t_employee> GetPaging(int pstart = 0, int pend = 5)
        {
            string _sql = "SELECT * FROM (SELECT a.*, ROW_NUMBER() OVER (ORDER BY a.employeeid) rownum FROM t_employee as a ) b WHERE b.rownum BETWEEN @start AND @end ORDER BY b.rownum";
            using (var _conn = Connection)
            {
                return _conn.Query<t_employee>(_sql, new { start = pstart, end = pend });
            }
        }
        #endregion

        #region 通用分页
        /// <summary>
        /// 通用分页
        /// </summary>
        /// <returns></returns>
        public int GetPaging()
        {
            ////实际开发可以独立出来处理/////////////
            var _ppaging = new p_PageList<t_employee>();
            _ppaging.Tables = "t_employee";
            _ppaging.OrderFields = "employeeid asc";
            ///////////////////////////////////////
            var _dy = new DynamicParameters();
            _dy.Add("Tables", _ppaging.Tables);
            _dy.Add("OrderFields", _ppaging.OrderFields);
            _dy.Add("TotalCount", dbType: DbType.Int32, direction: ParameterDirection.Output);
            using (var _conn = Connection)
            {
                _conn.Open();
                _ppaging.DataList = _conn.Query<t_employee>("p_PageList", _dy, commandType: CommandType.StoredProcedure);
            }
            _ppaging.TotalCount = _dy.Get<int>("TotalCount");
            return _ppaging.PageCount;
        }
        #endregion

        #region 存储过程Demo
        /// <summary>
        /// 存储过程Demo
        /// </summary>
        public Tuple<string, string> ProceDemo()
        {
            int employeeid = 1;
            var _mobile = "";
            var _dy = new DynamicParameters();
            _dy.Add("employeeid", employeeid);
            _dy.Add("displayname", string.Empty, dbType: DbType.String, direction: ParameterDirection.Output);
            using (var _conn = Connection)
            {
                _conn.Open();
                _mobile = _conn.Query<string>("p_Procedemo", _dy, commandType: CommandType.StoredProcedure).FirstOrDefault();
            }
            return Tuple.Create(_mobile, _dy.Get<string>("displayname"));
        }
        #endregion

//        public void aaa()
//        {
//            var sql =
//                    @"select * from #Posts p 
//                    left join #Users u on u.Id = p.OwnerId 
//                    Order by p.Id";

//            var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post; });
//            var post = data.First();

//            post.Content.IsEqualTo("Sams Post1");
//            post.Id.IsEqualTo(1);
//            post.Owner.Name.IsEqualTo("Sam");
//            post.Owner.Id.IsEqualTo(99);
//        }

    }
}


标签: Dapper

实例下载地址

Dapper从入门到精通(PDF+源码+数据库)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警