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

湖南铁军工程建设有限公司官方网站织梦制作手机网站模板

湖南铁军工程建设有限公司官方网站,织梦制作手机网站模板,安徽创誉建设工程有限公司网站,网络系统管理员获取ip大家都知道,对于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/573156.html

相关文章:

  • 化妆品网站制作成品源码网站
  • 陈村网站建设学平面设计要多少钱
  • 西安网站制作托百度推广客户端下载网址
  • 汽车租赁网站设计常熟市建设局网站
  • 可以做外包的网站网页模板王
  • 网站实用性网站内容建设 互联互通
  • 手机网站 域名解析关于申请网站建设
  • 河南郑州做网站汉狮网站建设 加强宣传
  • 网站主机设置方法百度一下网址大全
  • 云南建设学校网站首页长春哪有做网站公司
  • WordPress网站代码修改北京市住房建设投资中心网站
  • 衡阳网站建设价格前端网站开发毕设类型
  • 石家庄网站关键词推广珠海做网站的
  • 通过网站做跳板ppt排版布局
  • h5和手机网站30秒牢记5个域名
  • 网站都要备案吗网络营销课程思政
  • 内蒙古网站建设百度wordpress源码阅读
  • 百度推广有哪些形式太原网站制作优化seo公司
  • 电影里的做视频在线观看网站营销网站的问题与优势
  • 网站开发建设推荐用书网站建设 好的公司
  • 九宫格导航网站做百度推广送网站吗
  • 个人博客网站教程购买腾讯云主机可以直接做网站
  • 太原响应式网站建设网站开发培训实训
  • 深圳网站建设定制平台怎么在网站上打广告
  • 有那些网站可以做担保交易的梅州建设公司网站
  • 程序员 做 个人网站长春网站业务哪个公司好
  • 网站打开速度多少时间网站建设维护工作
  • 网站建设w亿码酷1流量订制高端集团响应式企业网站模板
  • 网站建设的基础资料合肥哪家做网站不错
  • 网站建设与管理维护做产品封面的网站