标签:detail default nuget select 特定 get async on() OLE
Dapper是.net 一个简单的对象映射,就速度而言,他是轻量数据 Orm 之王,他和Ado.net的DataReader一样快。ORM是对象关系映射器,负责数据库和编程语言之间的映射。
Dapper 继承了IDbConnection,通过扩展数据库查询方法进行数据库查询
Dapper可与任何数据库提供程序使用,没有特定的数据库实现。
主要分三个过程:
安装
Dapper通过Negut进行安装:https://www.nuget.org/packages/Dapper
PM> Install-Package Dapper
dapper使用多种方法扩展IDbConnection接口
string sqlOrderDetails = "SELECT TOP 5 * FROM OrderDetails;"; string sqlOrderDetail = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;"; string sqlCustomerInsert = "INSERT INTO Customers (CustomerName) Values (@CustomerName);"; using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools())) { var orderDetails = connection.Query<OrderDetail>(sqlOrderDetails).ToList(); var orderDetail = connection.QueryFirstOrDefault<OrderDetail>(sqlOrderDetail, new {OrderDetailID = 1}); var affectedRows = connection.Execute(sqlCustomerInsert, new {CustomerName = "Mark"}); Console.WriteLine(orderDetails.Count); Console.WriteLine(affectedRows); FiddleHelper.WriteTable(orderDetails); FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail }); }
执行和查询可以使用多种不同类型的参数
// 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, parameter, commandType: CommandType.StoredProcedure); int rowCount = parameter.Get<int>("@RowCount"); // List connection.Query<Invoice>(sql, new {Kind = new[] {InvoiceKind.StoreInvoice, InvoiceKind.WebInvoice}}).ToList(); // String connection.Query<Invoice>(sql, new {Code = new DbString {Value = "Invoice_1", IsFixedLength = false, Length = 9, IsAnsi = true}}).ToList();
查询方法返回的结果可以映射为不同类型
string sqlOrderDetails = "SELECT TOP 10 * FROM OrderDetails;"; using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools())) { var anonymousList = connection.Query(sqlOrderDetails).ToList(); var orderDetails = connection.Query<OrderDetail>(sqlOrderDetails).ToList(); Console.WriteLine(anonymousList.Count); Console.WriteLine(orderDetails.Count); FiddleHelper.WriteTable(orderDetails); FiddleHelper.WriteTable(connection.Query(sqlOrderDetails).FirstOrDefault()); }
// 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);
标签:detail default nuget select 特定 get async on() OLE
原文地址:https://www.cnblogs.com/yangda/p/13056357.html