![](/img/trans.png)
[英]System.Data.SqlClient.SqlException: Implicit conversion from data type sql_variant to uniqueidentifier is not allowed.
[英]Implicit conversion from data type sql_variant to varchar is not allowed
使用 Dapper 從 .NET Entity Framework 調用存儲過程時出現此錯誤。
不允許從數據類型 sql_variant 隱式轉換為 varchar。
存儲過程參數是@Name nvarchar(50) = NULL
。
所以理想情況下,它應該接受一個空值。 當我調用存儲過程並從 .NET 傳遞@Name = null
時,我得到了這個錯誤。
這是存儲過程:
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 在內部將object
映射到sql_variant
。 當我傳遞null
它會將其視為object
類型。 由於我的存儲過程需要varchar
,所以sql_variant
不能轉換為它。
我開始傳遞string.Empty
而不是null
對象,它工作正常。
@Name = Request.Name??string.Empty;
對我來說,問題是我使用 Visual Studio 的“選擇性粘貼”->“將 JSON 粘貼為類”自動生成了我的 DTO 類,並且它將某些成員的數據類型設置為對象而不是字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.