使用 FromSql 或 FromSqlInterpolated

问题描述 投票:0回答:1

根据本文档(https://www.learnentityframeworkcore.com/raw-sql/from-sql)你应该这样做:

string value = "value";

_dbContext.Set<T>().FromSqlInterpolated($"SELECT * FROM Table WHERE ColumnName LIKE '%{value}%'");

使用

FormatableString
时的结果相同:

FormatableString sql = "SELECT * FROM Table WHERE ColumnName LIKE '%{value}%'"
_dbContext.Set<T>().FromSqlInterpolated(sql);

将 sql 查询分析为字符串后,结果是:

"SELECT * FROM Table WHERE ColumnName LIKE '%{0}%'"

我错过了什么或做错了什么?什么时候应该使用

FromSqlRaw
FromSqlInterpolated

c# sql asp.net-core entity-framework-core
1个回答
0
投票

您可以将 FromSqlRaw 与字符串和单引号一起使用:

string value = "value";
string sql = $"SELECT * FROM Table WHERE ColumnName LIKE = '%{value}%'";
_dbContext.Set<T>().FromSqlRaw(sql);

或者使用 FormattableString 且不带单引号的 FromSql/FromSqlInterpolated:

string value = "%value%";
FormattableString sql = $"SELECT * FROM Books WHERE Title LIKE {value}";
_dbContext.Set<T>().FromSqlInterpolated(sql);
© www.soinside.com 2019 - 2024. All rights reserved.