zoukankan      html  css  js  c++  java
  • Dapper存储过程以及多次查询和批量写入操作

    一、存储过程操作

    1. 准备存储过程 newsreturnvalue(该存储过程计算2个参数的和并返回)        

    USE [ZPC.Contact]
    
    GO
    
    SET ANSI_NULLS ON
    
    GO
    
    SET QUOTED_IDENTIFIER ON
    
    GO
    
    create proc [dbo].[newsreturnvalue]
    (
    
      @param1 int,
      @param2 int
    )
    
    as
    
    begin
       return @param1+@param2;
    end

    2. 调用方式: 

    private static void ExecuteWithParam()
    {
          using (IDbConnection conn = GetConnection())
          {
                 DynamicParameters p = new DynamicParameters();
                 p.Add("@param1", 1);
                 p.Add("@param2",2);
                 p.Add("@ReturnValue", null, DbType.Int32, ParameterDirection.ReturnValue);
    
                 conn.Execute("newsreturnvalue", p, null, null, CommandType.StoredProcedure);
    
                 int result= p.Get<int>("@ReturnValue");
    
                 Console.WriteLine(result);
         }
    }

     二、QueryMultiple 批量查询介绍 

    private static void GetNewsAndCat()
    {
          using (IDbConnection conn = GetConnection())
          {
               string sql = @"
                            select * from news n inner join newscat nc on n.columncatid=nc.id where n.id=@id;
                            select * from newscat where id=@id
                            ";
    
               using (var mulsql = conn.QueryMultiple(sql, new { id = 2 })) {
                     var news = mulsql.Read<News>().SingleOrDefault();
                     var newscat = mulsql.Read<NewsCat>().SingleOrDefault();
               }
          }
     }

    三、批量写入操作

     private static int InsertNewsBatch()
     {
          using(IDbConnection conn = GetConnection())
          {
                int result= conn.Execute("insert into NewsCat(Name,modifiedon,parentid) values(@name,@modifiedon,@parentid)", new []{
                        new {name="cat1",modifiedon=DateTime.Now, parentid=0 },
                        new {name="cat2",modifiedon=DateTime.Now, parentid=0 },
                        new {name="cat3",modifiedon=DateTime.Now, parentid=0 }
                }, null, null, null);
    
                return result;
          }
    }

    补充一下Dapper还支持List集合如: 

    private static void GetByIds()
    {
          IList<int> idslist = new List<int> {6,7,8};
          using (IDbConnection conn = GetConnection())
          {
                var list= conn.Query<NewsCat>("select * from Newscat where id in @ids", new { ids = idslist });
                foreach(var item in list)
                {
                       Console.WriteLine(item.Name);
                }
          }
    }
  • 相关阅读:
    占满屏幕的宽高,当把textarea换成其他标签的时候,怎么才能编辑?
    鼠标点击文本框后,里面的文字就消失或全选中
    jquery中选取兄弟节点的方法
    文本出现省略号
    滚动条的样式
    省略号的样式。
    input的placeholder在ie9下不兼容的结局办法。
    [CF1097D] Makoto and a Blackboard
    [CF552C] Vanya and Scales
    [CF1353E] K-periodic Garland
  • 原文地址:https://www.cnblogs.com/li150dan/p/9713326.html
Copyright © 2011-2022 走看看