[英]EF Core FromSqlRaw with column variable
Attempting to set the column as a parameter in FromRawSql
.尝试将列设置为
FromRawSql
中的参数。 Query always returns null, I understand this is because the SQL is compiled before parameter values are set.查询总是返回 null,我理解这是因为 SQL 是在设置参数值之前编译的。 How can I pass the column name into the query as a parameter?
如何将列名作为参数传递到查询中?
What I'm trying:我正在尝试什么:
var param = new SqlParameter[] {
new SqlParameter("@col", dataDiscriminator),
new SqlParameter("@value", itemDiscValue)
};
var thisq = context.Devices.FromSqlRaw("SELECT * FROM Devices WHERE @col = @value", param);
var thisDevice = thisq.SingleOrDefault();
Will produce the SQL:将生产 SQL:
DECLARE @col nvarchar(4) = N'Name';
DECLARE @value nvarchar(26) = N'Registration Template';
SELECT * FROM Devices WHERE @prop = @value
you can not use parameter for table or column name.您不能使用参数作为表名或列名。 Try this
尝试这个
var param = new SqlParameter[] {
new SqlParameter("@value", itemDiscValue)
};
var thisq = context.Devices.FromSqlRaw($"SELECT * from Devices WHERE {dataDiscriminator} = @value", param).ToList();
var thisDevice = thisq.SingleOrDefault();
I don' t know where dataDiscriminator data from but always remember about the sql script injections.我不知道 dataDiscriminator 数据来自哪里,但始终记得 sql 脚本注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.