Dapper 参数没有被替换
Posted
技术标签:
【中文标题】Dapper 参数没有被替换【英文标题】:Dapper parameters not being replaced 【发布时间】:2017-11-14 11:43:23 【问题描述】:我已经在这个项目上使用 Dapper 几个月了,没有任何问题。但是现在我必须使用原始 SQL 而不是带有 dapper 的存储过程来创建和更改数据库中的 Users 和 Roles,因为 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);
我不断收到同样的错误:
@UserLogin 的语法无效
我将我的domain\username
作为登录名传递,并且我也尝试过不使用domain\
。一样。有人可以对此有所了解吗?
【问题讨论】:
您是否尝试过使用常规类而不是 DynamicParameters 类? 您不能使用参数来表示系统名称,如表、列甚至用户或角色。这不是 Dapper 的问题 我就是这么想的。您能否为此提供文档链接?我尝试自己寻找这类信息,以防万一。 角色参数是字符串吗? 【参考方案1】:我不熟悉 Dapper,但您可以尝试将参数值嵌入到您发送执行的 SQL 字符串中:
conn.Open();
conn.Execute("Create User " + user);
conn.Execute("ALTER ROLE " + role + " ADD MEMBER " + user);
请注意,这会带来安全风险,并可能导致其他问题!
【讨论】:
Note that this comes with security risks and may cause other problems!
那么你可能不建议这样做..以上是关于Dapper 参数没有被替换的主要内容,如果未能解决你的问题,请参考以下文章