簡體   English   中英

不允許從數據類型 sql_variant 隱式轉換為 varchar

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM