輕量級ORM框架Dapper應用六:Dapper支持存儲過程


在Entity Framework中講解了EF如何支持存儲過程,同樣,Dapper也支持存儲過程,只需要在Query()方法的CommandType中標記使用的是存儲過程就可以了。在Users表上面創建如下的存儲過程:

CREATE proc sp_GetUserByUserName
@UserName varchar(16)
as
begin
select * FROM Users WHERE UserName=@UserName
end
GO

 調用存儲過程的代碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Data.SqlClient;
 7 using System.Configuration;
 8 using System.Data;
 9 using Dapper;
10 using DapperApplicationProcedure.Model;
11 
12 namespace DapperApplicationProcedure
13 {
14     class Program
15     {
16         static void Main(string[] args)
17         {
18             // 連接字符串
19             string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
20             using (IDbConnection connection = new SqlConnection(conn))
21             {
22                 var query = connection.Query<User>("sp_GetUserByUserName", new { UserName = "風清揚" }, commandType: CommandType.StoredProcedure);
23                 // 輸出
24                 query.AsList().ForEach(p => 
25                 {
26                     Console.WriteLine("姓名:"+p.UserName+",郵箱:"+p.Email+",地址:"+p.Address);
27                 });
28             }
29 
30             Console.ReadKey();
31         }
32     }
33 }

運行過程:

注意:例子中只演示了使用一個參數的存儲過程,如果有多個參數使用方法也一樣。 

示例代碼下載地址:https://pan.baidu.com/s/1bpjR5cN

二、使用Execute執行帶輸出參數的存儲過程

創建存儲過程如下:

CREATE proc procWithOutPara
@num1 int,
@num2 int,
@sum int output
as
begin
  set @sum=@num1+@num2
end
GO

dapper調用存儲過程代碼如下:

// 動態類型參數
DynamicParameters paras = new DynamicParameters();
paras.Add("@num1", 23);
paras.Add("@num2", 45);
paras.Add("@sum", 0, DbType.Int32, ParameterDirection.Output);// 指明是輸出參數,這里為指明參數類型大小
// 執行存儲過程
dbConnection.Execute("procWithOutPara", paras, commandType: CommandType.StoredProcedure);
// 獲取輸出參數的值
int sum = paras.Get<int>("@sum");//68

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM