小巧的参数没有被替换
问题描述:
我一直在这个项目上使用Dapper几个月并且一直没有问题。但现在我必须使用原始SQL而不是存储过程和精简器来创建和更改用户和角色在数据库中,因为sp_addrolemember
现在已被弃用。小巧的参数没有被替换
我用这个作为我的短小精悍代码
conn.Open();
var p = new DynamicParameters();
p.Add("@UserLogin", user);
p.Add("@UserRole", role);
conn.Execute("Create User @UserLogin", p);
conn.Execute("ALTER ROLE @UserRole ADD MEMBER @UserLogin", p);
我不断收到同样的错误:
Invalid syntax at @UserLogin
我通过我的domain\username
的登录信息和我已经试过了没有domain\
。一样。有人可以对此有所了解吗?
答
我不熟悉,小巧玲珑,但你可以尝试嵌入参数值到您发送要执行的SQL字符串:
conn.Open();
conn.Execute("Create User " + user);
conn.Execute("ALTER ROLE " + role + " ADD MEMBER " + user);
注意,这个自带的安全隐患,并可能导致其他的问题!
+1
'请注意,这有安全风险,可能会导致其他问题!'那么你可能不应该建议这样做.. – Rob
您是否尝试过使用常规类而不是DynamicParameters类? – Gusman
您不能使用参数来表示系统名称,如表,列或甚至用户或角色。这不是一个小巧的问题 – Steve
这就是我在想什么。你能提供一个链接到这个文件吗?我试图寻找这种类型的信息,以防原因。 –