繁体   English   中英

Dapper.NET:varchar(4000)默认值

[英]Dapper.NET: The varchar(4000) default

我正在使用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) ......

有人面对这个错误吗? 你是如何解决的? 你找到了另一个这样的bug吗?

这不是一个错误。 Dapper必须为字符串参数选择SQL数据类型,而不查看数据库结构(更不用说解析查询并确定您是否将参数插入特定列)。

想象一下,如果你这样做:

insert Clients(name) values(@Name + 'abc')

Dapper是否应该弄清楚@Name最多可以包含47个字符?

如果您愿意,可以更具体地说明参数的大小:

con.Execute(@" insert Clients(name) values(@Name)", 
    new { Name = new DbString { Value = "John", Length = 50 }});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM