目前我正在嘗試使用使用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"
一些string
,比我得到下面的異常:
演員42A整數不可能
此異常當我使用以下代碼時拋出:
Test test = connection.Query<Test>("SELECT :Str1 as Str1, :Str2 as Str2",
new Test() { Str1 = 35, Str2 = "42a" }).FirstOrDefault();
有沒有一些已知的問題?這應該正常工作,因爲我只是想傳遞一個字符串。
編輯
堆棧跟蹤:
iAnywhere.Data.SQLAnywhere.SAException(0X80004005):Umwandeln馮 '42A' 奧夫整數nichtmöglich 貝iAnywhere.Data.SQLAnywhere.SACommand。 _ExecuteReader(CommandBehavior commandBehavior,布爾isExecuteScalar,布爾isBeginExecuteReader) bei iAnywhere.Data.SQLAnywhere.SACommand.ExecuteDbDataReader(CommandBehavior行爲) bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(的CommandBehavior行爲) 貝Dapper.SqlMapper.d__61
1.MoveNext() bei System.Collections.Generic.List
1..ctor(IEnumerable的1 collection) bei System.Linq.Enumerable.ToList[TSource](IEnumerable
1源) 貝Dapper.SqlMapper.Query [T](CNN的IDbConnection,字符串SQL,對象PARAM,IDbTransaction交易,布爾緩衝,可空1 commandTimeout, Nullable
1命令類型) 貝DapperSqlAnywhere.Program.Main(字串[] args)在C:\用戶.... \ DapperSqlAnywhere \的Program.cs:Zeile 35.
感謝!
你能發佈完整的堆棧跟蹤嗎? – sstan
在你的'Test'中,參數'Str2'設置爲什麼類型? – Draken
@Draken它總是一個字符串/ varchar。我會盡快發佈整個堆棧跟蹤 – BendEg