zoukankan      html  css  js  c++  java
  • 轻量级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
  • 相关阅读:
    tensorflow的日常Demo
    docker 搭建Mysql集群
    简单版nginx lua 完成定向流量分发策略
    简单版nginx lua 完成流量上报于中间件
    redis 数据备份持久化方案
    nginx 场景业务汇总 (中)
    nginx 场景业务汇总 (初)
    Sentinel 哨兵 实现redis高可用
    工地信息化——施工现场网格化管理系统实施小记
    小记 xian80 坐标转换 wgs84
  • 原文地址:https://www.cnblogs.com/dotnet261010/p/8177358.html
Copyright © 2011-2022 走看看