基本信息
源码名称:Dapper从入门到精通(PDF+源码+数据库)
源码大小:1.44M
文件格式:.rar
开发语言:C#
更新时间:2016-01-26
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
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/
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);
// }
}
}