Dapper是一款轻量级ORM工具(Github),Dapper语法十分简单。并且无须迁就数据库的设计,今天通过本文给大家介绍C# Dapper的使用,感兴趣的朋友一起看看吧
Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。
- 轻量。只有一个文件SqlMapper.cs,编译后就40K的一个很小的Dll.
- 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
- 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
- 可以映射一对一,一对多,多对多等多种关系。
- 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
- 支持FrameWork2.0,3.0,3.5,4.0,4.5
- Dapper语法十分简单。并且无须迁就数据库的设计
// <copyright file="DapperTools.cs" company="PlaceholderCompany"> // Copyright (c) PlaceholderCompany. All rights reserved. // </copyright> namespace CSharpStudy { using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; using Dapper; internal class DapperTools { public static string ConnectionString = ConfigurationManager.ConnectionStrings["MyStrConn"].ConnectionString; /// <summary> /// 添加. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入实体类型.</param> /// <returns>int.</returns> public static int Add<T>(string sql, T t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 批量添加. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入泛型类.</param> /// <returns>int.</returns> public static int Add<T>(string sql, List<T> t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 删除. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入实体类型.</param> /// <returns>int.</returns> public static int Delete<T>(string sql, T t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 批量删除. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入泛型类.</param> /// <returns>int.</returns> public static int Delete<T>(string sql, List<T> t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 修改. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入实体类型.</param> /// <returns>int.</returns> public static int Update<T>(string sql, T t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 批量修改. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入泛型类.</param> /// <returns>int.</returns> public static int Update<T>(string sql, List<T> t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Execute(sql, t); } } /// <summary> /// 查询. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <returns>泛型类.</returns> public static List<T> Query<T>(string sql) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Query<T>(sql).ToList(); } } /// <summary> /// 查询指定数据. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <param name="t">传入泛型类.</param> /// <returns>类.</returns> public static T Query<T>(string sql, T t) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Query<T>(sql, t).SingleOrDefault(); } } /// <summary> /// 查询的in操作. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> /// <returns>泛型类.</returns> public static List<T> Query<T>(string sql, int[] ids) where T : class { using (IDbConnection connection = new SqlConnection(ConnectionString)) { return connection.Query<T>(sql, new { ids }).ToList(); } } /// <summary> /// 多语句操作. /// </summary> /// <typeparam name="T">实体类型.</typeparam> /// <param name="sql">传入sql执行语句.</param> public static void QueryMultiple(string sql) { using (IDbConnection connection = new SqlConnection(ConnectionString)) { var multiReader = connection.QueryMultiple(sql); var userInfo = multiReader.Read<UserInfo>(); var student = multiReader.Read<Student>(); multiReader.Dispose(); } } } }
调用举例