C#中如何使用EF Core的原始SQL查询带参数?示例是什么?

小老鼠
发布: 2025-10-08 12:20:02
原创
513人浏览过
<p>推荐使用FromSqlRaw、ExecuteSqlRaw或FromSqlInterpolated配合参数化查询防止SQL注入。1. 查询实体用FromSqlRaw,如:context.Users.FromSqlRaw("SELECT FROM Users WHERE Id = {0}", userId).ToList();2. 复杂场景可用SqlParameter明确指定参数,如:new SqlParameter("@name", "张%");3. 执行非查询语句用ExecuteSqlRaw,如:context.Database.ExecuteSqlRaw("UPDATE Users SET Name = {0} WHERE Id = {1}", newName, id);4. 推荐使用FromSqlInterpolated,支持字符串插值并自动参数化,如:context.Users.FromSqlInterpolated($"SELECT FROM Users WHERE Age > {age}").ToList()。关键始终是避免拼接SQL,使用参数化确保安全。</p>

c#中如何使用ef core的原始sql查询带参数?示例是什么?

在C#中使用EF Core执行带参数的原始SQL查询,推荐使用 FromSqlRawExecuteSqlRaw 方法,并配合参数化查询来防止SQL注入。下面介绍常见用法和示例。

1. 查询实体数据(FromSqlRaw)

当你想从数据库中查询实体(如映射到某个 DbSet 的表),可以使用 FromSqlRaw 并传入带参数的SQL语句:

var userId = 1;
var users = context.Users
    .FromSqlRaw("SELECT * FROM Users WHERE Id = {0}", userId)
    .ToList();
登录后复制

说明:
{0} 是参数占位符,EF Core 会自动将其替换为安全的参数化形式,避免SQL注入。
支持多个参数,例如:
"SELECT * FROM Users WHERE Age > {0} AND Name LIKE {1}"

2. 使用 SqlParameter(更安全)

对于复杂场景或需要明确指定数据库类型时,可使用 SqlParameter

var nameParam = new SqlParameter("@name", "张%");
var users = context.Users
    .FromSqlRaw("SELECT * FROM Users WHERE Name LIKE @name", nameParam)
    .ToList();
登录后复制

优势: 可以设置参数类型、大小等,更贴近原生SQL控制。

3. 执行非查询语句(ExecuteSqlRaw)

用于执行 INSERT、UPDATE、DELETE 等操作:

阿里云-虚拟数字人
阿里云-虚拟数字人

阿里云-虚拟数字人是什么? ...

阿里云-虚拟数字人2
查看详情 阿里云-虚拟数字人
var newName = "李四";
var id = 1;
context.Database.ExecuteSqlRaw(
    "UPDATE Users SET Name = {0} WHERE Id = {1}", 
    newName, id);
登录后复制

该方法返回受影响的行数,适用于不返回实体的命令。

4. 使用 FromSqlInterpolated(推荐方式)

EF Core 也支持字符串插值语法 FromSqlInterpolated,更直观且安全:

var age = 18;
var users = context.Users
    .FromSqlInterpolated($"SELECT * FROM Users WHERE Age > {age}")
    .ToList();
登录后复制

内部自动将插值表达式转为参数化查询,兼具可读性与安全性。

基本上就这些常用方式。关键点是:不要拼接SQL字符串,始终使用参数占位符或 SqlParameter 来传参,确保应用安全。

以上就是C#中如何使用EF Core的原始SQL查询带参数?示例是什么?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号