我正在使用Dapper.NET,当我执行下面的代码时:
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)...
有人遇到这个错误吗?你如何解决它?你是否发现了其他类似的错误?
string
是UTF-16(因此非ANSI-string),潜在的长度限制仅受内存限制。这相当于具有最大可用长度的nvarchar
类型。我认为这不是一个错误,但您必须自己进行验证或在INSERT
时捕获数据完整性违规异常。 - Patryk Ćwiek