当前位置: 首页 > wzjs >正文

做网站 就上微赞网最新互联网项目平台网站

做网站 就上微赞网,最新互联网项目平台网站,wordpress模板优化,水平型b2b网站有哪些大家都知道,对于SQL Server IN是有限制条件的,如果IN里面的内容过多,在执行的时候会被自动截断,因而导致查询到的结果不是实际需要的结果。 select * from Payments where Id in (1,2,3,4,...) 为了解决上面的限制,可以…

大家都知道,对于SQL Server IN是有限制条件的,如果IN里面的内容过多,在执行的时候会被自动截断,因而导致查询到的结果不是实际需要的结果。

select * from Payments where Id in (1,2,3,4,...)

为了解决上面的限制,可以改为利用用户自定义数据类型解决。

具体内容如下:

1. Create User-Defined Data Types

CREATE TYPE [dbo].[IdTable] AS TABLE([Id] [int] NOT NULL
)
GO

2. Create Store Procedure which use IdTable as Input paramter.

CREATE PROCEDURE [dbo].[SP_GET_PAYMENTS]                  @PaymentIds [dbo].[IdTable] READONLY                 
AS   
BEGIN  select p.Id,p.DueDate   from @PaymentIds tp     join Payments p with (nolock) on tp.Id=p.Id 
END  

3. Parameter convert to IdTable. SQLMapper Extension

  public static class Extensions{/// <summary>/// This extension converts an enumerable set to a Dapper TVP/// </summary>/// <typeparam name="T">type of enumerbale</typeparam>/// <param name="enumerable">list of values</param>/// <param name="typeName">database type name</param>/// <param name="orderedColumnNames">if more than one column in a TVP, /// columns order must mtach order of columns in TVP</param>/// <returns>a custom query parameter</returns>public static SqlMapper.ICustomQueryParameter AsTableValuedParameter<T>(this IEnumerable<T> enumerable,string typeName, IEnumerable<string> orderedColumnNames = null){var dataTable = new DataTable();if (typeof(T).IsValueType || typeof(T).FullName.Equals("System.String")){dataTable.Columns.Add(orderedColumnNames == null ?"NONAME" : orderedColumnNames.First(), typeof(T));foreach (T obj in enumerable){dataTable.Rows.Add(obj);}}else{PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);PropertyInfo[] readableProperties = properties.Where(w => w.CanRead).ToArray();if (readableProperties.Length > 1 && orderedColumnNames == null)throw new ArgumentException("Ordered list of column names must be provided when TVP contains more than one column");var columnNames = (orderedColumnNames ??readableProperties.Select(s => s.Name)).ToArray();foreach (string name in columnNames){dataTable.Columns.Add(name, readableProperties.Single(s => s.Name.Equals(name)).PropertyType);}foreach (T obj in enumerable){dataTable.Rows.Add(columnNames.Select(s => readableProperties.Single(s2 => s2.Name.Equals(s)).GetValue(obj)).ToArray());}}return dataTable.AsTableValuedParameter(typeName);}}

4. Dapper code

Dapper version: 2.1.37

using System;
using System.Configuration;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using Dapper;
using log4net;
using Microsoft.Data.SqlClient;
using static Dapper.SqlMapper;public List<T> QueryEntitiesNoUTC<T>(string sqlCommand, object parameters, CommandType commandType, int commandTimeout = 60){using (SqlConnection Connection = GetSqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString)){try{Connection.Open();List<T> returnValues = Connection.Query<T>(sqlCommand, parameters, commandType: commandType, commandTimeout: GetCommandTimeout(commandTimeout)).ToList<T>();Connection.Close();Connection.Dispose();return returnValues;}catch (Exception e){Log.Error(e);throw;}finally{Connection.Close();Connection.Dispose();}}}

5. C# call Demo

        public static List<PaymentDto> GetPayment(List<int> paymentIds){if (paymentIds == null || paymentIds.Count == 0){return new();}var param = new { PaymentIds = paymentIds.AsTableValuedParameter("dbo.IdTable", new List<string>() { "Id" }) };var result = dapperHelper.QueryEntitiesNoUTC<PaymentDto>("SP_GET_PAYMENTS", param, CommandType.StoredProcedure, SqlConstants.GetBiggerRecordsTimeoutSeconds);return result;}

如果是多个参数:

var param = new { PaymentIds= paymentIds.AsTableValuedParameter("dbo.IdTable", new List<string>() { "Id" }), Status= status};

http://www.dtcms.com/wzjs/382410.html

相关文章:

  • 网站平台建设重点难点分析百度爱采购优化
  • 烟台 o2o平台带动做网站行业软文模板
  • 一 网站建设的总体目标百度推广投诉电话客服24小时
  • 哪里可以做足球网站北京百度seo排名公司
  • 莱芜网站建设公司简短的软文范例
  • net域名做网站怎么样电脑培训班价目表
  • 网页制作macromedia平台网络优化工资一般多少
  • 网站制作一般需要多少钱?百度提交入口地址在哪
  • 网站建设软文北京网站优化步
  • wordpress漫画主题推荐深圳关键词排名seo
  • 铜川泰士公馆建设网站关键词歌词表达的意思
  • 杭州网站建设专家权重查询
  • 南通网站建设报价杭州专业seo公司
  • 永久域名网站百度关键词推广帝搜软件
  • 怎么在传奇网站上做宣传竞价托管服务多少钱
  • 记事本做网站如何排版培训机构哪家好
  • 佛山大沥郑州网站关键词优化公司哪家好
  • 飞言情做最好的言情网站海外建站
  • 手机网站建设公司哪家好汤阴县seo快速排名有哪家好
  • 网站下载图标今日头条权重查询
  • dede制作动态网站模板下载网站快速排名服务
  • 广州app制作网站关键词优化方法
  • 抚顺网站网站建设百度seo查询
  • 简单的装x编程代码seo技术好的培训机构
  • 建网站浩森宇特建站平台有哪些
  • wordpress 需要事务seo网站推广优化就找微源优化
  • 做网站要多少人网站外链有多重要
  • 做网站的内容百度竞价推广收费
  • 网站经常被攻击seo外链平台热狗
  • 济南代做标书网站标志宁波seo网络推广选哪家