带有 where 子句反斜杠的 SqlCommand

SqlCommand with where clause backslashes

数据库中有 DESKTOP-123\markj 的匹配记录。当我在 SQL Server Management Studio 中执行代码时,它 returns 一条记录。

DECLARE @User NVARCHAR(260) = 'DESKTOP-123\markj'

SELECT r.RoleName 
FROM dbo.WindowsAuthenticationRole war 
JOIN dbo.[Role] r ON r.RoleId = war.RoleId 
WHERE war.[User] = @User

但是这个 C# 代码 returns 0 条记录

SqlCommand command = new SqlCommand("SELECT r.RoleName FROM dbo.WindowsAuthenticationRole war JOIN dbo.[Role] r ON r.RoleId = war.RoleId WHERE war.[User] = @User", connection);

command.Parameters.Add("@User", SqlDbType.NVarChar).Value = @"DESKTOP-123\markj";

如何让 C# 中的 SQL 命令生效?

更新

响应帮助我解决了问题,我实际上用两个斜杠将值保存在数据库中。

在不转义反斜杠的情况下使用 @ 或在不转义反斜杠的情况下使用 @

command.Parameters.Add("@User", SqlDbType.NVarChar).Value = @"DESKTOP-123\markj";

//or
command.Parameters.Add("@User", SqlDbType.NVarChar).Value = "DESKTOP-123\markj";

Documentation 关于字符串插值。