gpt4 book ai didi

c# - 为什么 NpgsqlParameter 在传递给 DbSet.FromSqlRaw 时不起作用

转载 作者:行者123 更新时间:2023-12-04 08:57:50 29 4
gpt4 key购买 nike

正如我在标题中提到的,DbSet.FromSqlRaw当我通过 NpgsqlParameter 时不工作.我总是得到空值。
以下是我尝试过的一些变化:

long value = 3;
NpgsqlParameter npgsqlParameter = new NpgsqlParameter("value", value);
string query = "SELECT * FROM \"Admin\".\"User\" as usr WHERE \"usr\".\"Value\" = '@value'";

var _user = _AdminPanelDbContext
.User
.FromSqlRaw(query, npgsqlParameter)
.FirstOrDefault();
long value = 3;
NpgsqlParameter npgsqlParameter = new NpgsqlParameter("value", value);
string query = "SELECT * FROM \"Admin\".\"User\" as usr WHERE \"usr\".\"Value\" = ':value'";

var _user = _AdminPanelDbContext
.User
.FromSqlRaw(query, npgsqlParameter)
.FirstOrDefault();
在有人问“为什么不使用内联插值字符串?”之前像这样。
FromSqlRaw($"SELECT * FROM \"Admin\".\"User\" as usr WHERE \"usr\".\"Value\" = {value}");
第一个原因是,因为我正在重用该 sql 查询(更准确地说,将其保存到审计中),第二个原因是我知道 NpgsqlParameter也是 SQL 注入(inject)安全的。

最佳答案

抱歉,我现在无法检查确切的语法 - 但是如何:

    long value = 3;
var searchParam = new NpgsqlParameter("value", value);
var _user = _AdminPanelDbContext.User.FromSqlRaw("select * from admin.user as usr where usr.value = @searchParam;", searchParam).FirstOrDefault();

有一个端到端的例子 here .
但是,听起来您正在使用 Postgres。如果是,请解释为什么您会看到有关需要使用 NpgsqlParameter 而不是 SqlParameter 的错误。

关于c# - 为什么 NpgsqlParameter 在传递给 DbSet.FromSqlRaw 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63721608/

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