c# – 仅在传递整数时使用命名参数
目前,我正在尝试使用带有dapper的SAP Sybase SQL Anywhere 12处理命名参数.以下代码正确运行:
public class Test { public int Str1 { get; set; } public string Str2 { get; set; } } class Program { static void Main(string[] args) { using (SAConnection connection = new SAConnection("...")) { connection.Open(); Test test = connection.Query<Test>("SELECT :Str1 as Str1,:Str2 as Str2",new Test() { Str1 = 35,Str2 = "42" }).FirstOrDefault(); Console.WriteLine($"Str1: {test.Str1} | Str2: {test.Str2}"); Console.ReadLine(); } } } 但是当我将Str2 =“42”更改为某个字符串时,我得到以下异常:
当我使用以下代码时抛出此异常: Test test = connection.Query<Test>("SELECT :Str1 as Str1,Str2 = "42a" }).FirstOrDefault(); 有一些已知的问题吗?这应该正常工作,因为我只想传递一个字符串. 编辑 堆栈跟踪:
非常感谢! 解决方法
我对SQLAnywhere了解不多,但在第一个select语句中被解析为
SELECT 35 as Str1,42 as Str2 这很好,因为它们都是整数 SELECT 35 as Str1,42a as Str2 应该是 SELECT 35 as Str1,'42a' as Str2 所以我尝试将代码更改为 Test test = connection.Query<Test>("SELECT :Str1 as Str1,':Str2' as Str2",Str2 = "42" }).FirstOrDefault(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |