LINQ to SQL:执行参数化查询时 ExecuteQuery 不起作用
我对 ExecuteQuery 有一个奇怪的问题,因为它在执行参数化查询时不起作用。
以下返回 1 条记录:
db.ExecuteQuery<Member>(@"SELECT *
FROM Member
INNER JOIN aspnet_Users ON Member.user_id = aspnet_Users.UserId
WHERE [aspnet_Users].[UserName] = 'Marina2'");
但是,参数化版本没有返回结果:
db.ExecuteQuery<Member>(@"SELECT *
FROM Member
INNER JOIN aspnet_Users ON Member.user_id = aspnet_Users.UserId
WHERE [aspnet_Users].[UserName] = '{0}'", "Marina2");
我做错了什么?
I have a weird problem with ExecuteQuery in that it isn't working when performing a parameterized query.
The following returns 1 record:
db.ExecuteQuery<Member>(@"SELECT *
FROM Member
INNER JOIN aspnet_Users ON Member.user_id = aspnet_Users.UserId
WHERE [aspnet_Users].[UserName] = 'Marina2'");
However, the parameterized version returns no results:
db.ExecuteQuery<Member>(@"SELECT *
FROM Member
INNER JOIN aspnet_Users ON Member.user_id = aspnet_Users.UserId
WHERE [aspnet_Users].[UserName] = '{0}'", "Marina2");
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试:
注意参数上没有引号。 Linq to SQL 会自动知道用引号格式化它。
根据 MSDN:
因此,基于此,如果您留下引号,您将在
[Username] = '@p0'
上进行匹配,但您可以运行探查器并捕获确切的 SQL 进行验证。Try:
Notice no quotes on the param. Linq to SQL will automatically know to format it with the quotes.
As per MSDN:
So based on that if you left the quotes in you would have been matching on
[Username] = '@p0'
but you could run profiler and capture the exact SQL to verify.