关注公众号 `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

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

被折叠的 条评论
为什么被折叠?



