如何将ADO.net通用查询转换为实体框架或Linq

本文关键字:转换 实体 框架 Linq 查询 ADO net | 更新日期: 2023-09-27 18:17:30

使用较新的EF/Linq生成动态查询并返回通用数据集的最佳模式是什么?

我现有的环境严重依赖于旧的ADO.net动态创建的SQL查询作为数据集返回。使用的句型:——SQL和参数细节故意省略——

SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

这允许我们返回自定义查询,并将它们作为数据网格一般返回给用户。我们可以执行任何动态创建的SQL,并返回具有不同列、数据类型等的不同数据集。

不用于O/R映射,但用于只读查询。

为此迁移到EF/Linq是否合适,或者最好继续使用ADO.net,即使它看起来像旧技术?

如何将ADO.net通用查询转换为实体框架或Linq

是否有为EF/LINQ?

在你的只读查询中使用Rob Conery的Massive怎么样?
简而言之:它执行SQL查询并返回动态对象列表。

引用链接:

var result = tbl.Query("SELECT * FROM Categories");

[…]

返回的是IEnumerable -意思是它是可塑的和令人兴奋的。它会是你在查询中返回的形状,它会有属性等等。

虽然EntityFramework确实有一个接受任意sql的CreateSourceQuery<T>方法,但它的结果必须在编译时已知,并通过泛型参数指定。因此,这种方法可能不适合您。

有一个动态扩展库可以让你指定任意sql针对一个linq-to-sql或实体框架上下文,但如果你要切换到linq只是为了传递动态sql,我想说这是不值得的。

使用简单的数据集