我使用Dapper.NET,當我執行下面的代碼:Dapper.NET:將varchar(4000),默認
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
con.Execute(@" insert Clients(name) values(@Name)", new {Name = "John"});
con.Close();
}
,它執行的查詢是下一個:
(@Name nvarchar(4000)) insert Clients(name) values(@Name)
而我的問題是:爲什麼Dapper將字符串轉換爲nvarchar(4000)?我的意思是......對數據庫,該名場是爲nvarchar(50) ...
有誰面對這樣的錯誤?你如何解決它?你有沒有發現像這樣的另一個錯誤?
我會說(但它是純粹的猜測),這是因爲小巧玲瓏不知道你的表結構什麼,並在.NET'string'是UTF-16(非ANSI字符串),除了內存之外,它可能沒有大小限制。這轉換爲具有最大可用長度的'nvarchar'類型。我會說這不是一個bug,但是你必須自己進行驗證或者在INSERT上捕獲數據完整性違規異常。 –