如何在不使用内联字符串的情况下参数化 Entity Framework Core 插值 SQL

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

我正在使用

Microsoft.Data.Sqlite;
来查询 SQLite 数据库。

mytable
表的结构和较大的尺寸意味着我需要提供手写SQL以进行高效的数据检索。

var myresult = dbContext.MyTable.FromSqlInterpolated($"select * from mytable where numericValue >= {dynamicNumericValueHere} limit 10;").ToList();

生成此 SQL

select * 
from mytable 
where numericValue >= @p0 
limit 10;

这工作正常,但是我必须使用内联 SQL 字符串,这是 SQL 的简化版本。实际的 SQL 有多行,有多个参数。

我也可能需要使用不同版本的 SQL 字符串。

如何将此 SQL 移出此 C# 文件,同时确保使用参数化查询来防止 SQL 注入,以便可以将 SQL 行单独组织在不同的文件中?

谢谢

c# sqlite entity-framework-core
1个回答
0
投票

您可以将逐字标识符与字符串插值结合起来。

var myresult = dbContext.MyTable.FromSqlInterpolated($@"
    select
        *
    from mytable
    where numericValue >= {dynamicNumericValueHere}
    limit 10;
").ToList();

更多信息:

逐字文本 - 变量、属性和字符串文字中的@

© www.soinside.com 2019 - 2024. All rights reserved.