20230223-EF6用原生的命令执行SQL命令

文章介绍了在WinForm开发中遇到EF6在QueryListQueryScalar方面的限制,以及如何通过扩展方法解决这个问题。文章提供了使用EFCore执行SQL查询以获取动态类型列表和标量值的方法,并展示了创建扩展方法的示例代码,包括QueryList和QueryScalar,同时讨论了ExecuteSql对于非查询SQL操作的应用。此外,文章还提到了在EFCore7.0中引入的新特性,如ExecuteUpdate和ExecuteDelete,以提升批量更新的效率。

关注公众号 `N学无止界` 获取更多​​​​​​​

目录:

一、环境说明

二、背景

三、示例代码

四、思考总结

一、环境说明

本机环境:windows10 操作系统
使用工具:Visual Studio 2022
Net版本:Net6.0

二、背景

在使用winform EF 开发过程中,需要用到类似 QueryList QueryScalar 等功能的时候,发现EF6只提供标量的List列表,且在一个context中,QueryScalar(执行SQL命令的事务有问题,无法更新到数据),所以需要一个扩展来执行特定的命令(SQL语句),以及可以实现动态的(dynamic)类型来满足开发需要。

官网参考资料 :

SQL 查询 - EF Core | Microsoft Learn

查询标量(非实体)类型

备注

EF Core 7.0 中已引入此功能。

虽然可以使用 FromSql 来查询模型中定义的实体,但如果使用 SqlQuery,你就可以通过 SQL 轻松查询非实体标量类型,无需下降到较低级别的数据访问 API。 例如,以下查询从 Blogs 表中提取所有 ID:C#复制

var ids = context.Database
    .SqlQuery<int>($"SELECT [BlogId] FROM [Blogs]")
    .ToList();

还可以在 SQL 查询的基础上组合使用 LINQ 运算符。 但是,由于 SQL 成为子查询,其输出列需要由 SQL EF 添加项来引用,因此必须为输出列 Value 命名。 例如,以下查询返回的 ID 高于 ID 平均值:C#复制

var overAverageIds = context.Data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_software

感谢打赏,我努力提供优质内容~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值