stored net framework c# .net sql-server ado.net dapper

c# - net - dapper vs entity framework



Dapper.NET: el valor predeterminado varchar(4000) (1)

Esto no es un error. Dapper tiene que elegir un tipo de datos SQL para un parámetro de cadena, sin mirar la estructura de la base de datos (sin mencionar analizar su consulta y determinar que está insertando el parámetro en una columna en particular).

Imagina si estuvieras haciendo esto:

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

¿Debería Dapper descubrir que @Name puede tener hasta 47 caracteres?

Puede ser más específico sobre el tamaño de su parámetro si lo desea:

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

Estoy usando Dapper.NET y cuando ejecuto el siguiente código:

using (SqlConnection con = new SqlConnection(connectionString)) { con.Open(); con.Execute(@" insert Clients(name) values(@Name)", new {Name = "John"}); con.Close(); }

La consulta que ejecuta es la siguiente:

(@Name nvarchar(4000)) insert Clients(name) values(@Name)

Y mi pregunta es: ¿por qué Dapper está traduciendo una cadena a un nvarchar (4000)? Quiero decir ... en la base de datos, el campo de nombre es un nvarchar (50) ...

¿Alguien enfrenta este error? Como lo arreglas? ¿Has encontrado otro error como este?