[译]Dapper教程

壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述[译]Dapper教程相关的知识,希望能为你提供帮助。
 

原文:Dapper Tutorial  ,获取更好浏览体验请跳转到GitBook[点击访问]。
什么是DapperDapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。
Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。
Dapper是如何工作的它可以分为三个步骤:
  • 创建一个IDbConnection接口对象;
  • 编写一个查询SQL来执行CRUD操作;
  • 将查询SQL作为Execute方法的参数传递。
安装Dapper通过NuGet安装:https://www.nuget.org/packages/Dapper
PM> Install-Package Dapper

要求Dapper可以与任何数据库提供者一起工作,因为没有数据库特定的实现。
方法Dapper会用以下几个方法扩展您的IDbConnection接口:
  • Execute
  • Query
  • QueryFirst
  • QueryFirstOrDefault
  • QuerySingle
  • QuerySingleOrDefault
  • QueryMultiple
string sqlInvoices = "SELECT * FROM Invoice; "; string sqlInvoice = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID; "; string sp = "EXEC Invoice_Insert"; using (var connection = My.ConnectionFactory()) { // 执行普通SQL var invoices = connection.Query< Invoice> (sqlInvoices).ToList(); // 执行带参数的SQL var invoice = connection.QueryFirstOrDefault(sqlInvoice, new {InvoiceID = 1}); // 执行存储过程 var affectedRows = connection.Execute(sp, new { Param1 = "Single_Insert_1" }, commandType: CommandType.StoredProcedure); }

参数执行和查询方法可以用以下几种不同的方式使用参数:
  • 匿名类型
  • 动态类型
  • 列表类型
  • 字符串类型
// Anonymous var affectedRows = connection.Execute(sql, new {Kind = InvoiceKind.WebInvoice, Code = "Single_Insert_1"}, commandType: CommandType.StoredProcedure); // Dynamic DynamicParameters parameter = new DynamicParameters(); parameter.Add("@Kind", InvoiceKind.WebInvoice, DbType.Int32, ParameterDirection.Input); parameter.Add("@Code", "Many_Insert_0", DbType.String, ParameterDirection.Input); parameter.Add("@RowCount", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); connection.Execute(sql, new {Kind = InvoiceKind.WebInvoice, Code = "Single_Insert_1"}, commandType: CommandType.StoredProcedure); // List connection.Query< Invoice> (sql, new {Kind = new[] {InvoiceKind.StoreInvoice, InvoiceKind.WebInvoice}}).ToList(); // String connection.Query< Invoice> (sql, new {Code = new DbString {Value = "https://www.songbingjia.com/android/Invoice_1", IsFixedLength = false, Length = 9, IsAnsi = true}}).ToList();

结果查询方法返回的结果可以映射到以下几种类型:
  • 匿名类型
  • 强类型
  • 多映射
  • 多结果
  • 多类型
string sql = "SELECT * FROM Invoice; "; using (var connection = My.ConnectionFactory()) { connection.Open(); var anonymousList = connection.Query(sql).ToList(); var invoices = connection.Query< Invoice> (sql).ToList(); }

工具
  • 异步
  • 缓冲
  • 事务
  • 存储过程
// Async connection.QueryAsync< Invoice> (sql)// Buffered connection.Query< Invoice> (sql, buffered: false)// Transaction using (var transaction = connection.BeginTransaction()) { var affectedRows = connection.Execute(sql, new {Kind = InvoiceKind.WebInvoice, Code = "Single_Insert_1"}, commandType: CommandType.StoredProcedure, transaction: transaction); transaction.Commit(); }// Stored Procedure var affectedRows = connection.Execute(sql, new {Kind = InvoiceKind.WebInvoice, Code = "Single_Insert_1"}, commandType: CommandType.StoredProcedure);

作者:Esofar
出处:http://www.cnblogs.com/esofar/p/dapper.html
【[译]Dapper教程】本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
  分类:  .NET技术

    推荐阅读