gpt4 book ai didi

c# - 如何在 Linq FromSQL 查询中使用参数

转载 作者:行者123 更新时间:2023-11-30 21:30:01 25 4
gpt4 key购买 nike

我正在尝试从 Locations 表中获取列表并排除已分配给用户的 Locations。我正在尝试使用 Linq FromSQL。如果我硬编码 user.Id 参数查询有效,当我使用 user.Id 变量时它不起作用。查询返回所有记录。当我运行调试器时,user.Id 变量是正确的。这是我的代码...

ApplicationUser user = await _userManager.FindByNameAsync(Id);

var unassignedLocations = await _context.Location
.FromSql($"SELECT * FROM Locations WHERE Id NOT IN (SELECT LocationId FROM UserLocations WHERE UserID='{user.Id}')")
.OrderBy(l => l.Name)
.ToListAsync();

Locations = new SelectList(unassignedLocations, "Id", "Name");

最佳答案

问题是值周围的引号

UserID='{user.Id}'

当使用带有内插 SQL 字符串的 FromSql 方法重载时,而不是将值嵌入到 SQL 字符串中(这将允许 SQL 注入(inject)攻击),EF Core 将为字符串中的每个占位符绑定(bind)一个参数- 在这种情况下,值为 = user.Id 的单个参数。

因此,您必须直接访问该值,而无需用引号将其括起来,例如常量:

WHERE UserID={user.Id}

关于c# - 如何在 Linq FromSQL 查询中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com