[英]Implicit conversion from data type sql_variant to varchar is not allowed
I'm getting this error when calling a stored procedure from .NET Entity Framework using Dapper.使用 Dapper 从 .NET Entity Framework 调用存储过程时出现此错误。
Implicit conversion from data type sql_variant to varchar is not allowed.
不允许从数据类型 sql_variant 隐式转换为 varchar。
The stored procedure parameter is @Name nvarchar(50) = NULL
.存储过程参数是
@Name nvarchar(50) = NULL
。
So ideally, it should accept a null value.所以理想情况下,它应该接受一个空值。 When I call the stored procedure and pass
@Name = null
from .NET, I get gives this error.当我调用存储过程并从 .NET 传递
@Name = null
时,我得到了这个错误。
This is the stored procedure:这是存储过程:
CREATE PROCEDURE [dbo].[Member_Add]
@Id NVARCHAR(50) = NULL,
@Name NVARCHAR(50) = NULL
AS
BEGIN
INSERT INTO [dbo].Member (Id, Name)
VALUES (@Id, @Name)
END
Dapper was internally mapping object
to sql_variant
. Dapper 在内部将
object
映射到sql_variant
。 When I pass null
it was considering it as object
type.当我传递
null
它会将其视为object
类型。 As my stored procedure was expecting varchar
, sql_variant
was not convertible to it.由于我的存储过程需要
varchar
,所以sql_variant
不能转换为它。
I started passing string.Empty
instead of null
object and it was working fine.我开始传递
string.Empty
而不是null
对象,它工作正常。
@Name = Request.Name??string.Empty;
@Name = Request.Name??string.Empty;
对我来说,问题是我使用 Visual Studio 的“选择性粘贴”->“将 JSON 粘贴为类”自动生成了我的 DTO 类,并且它将某些成员的数据类型设置为对象而不是字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.