如何将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,即使它看起来像旧技术?
是否有为EF/LINQ?
在你的只读查询中使用Rob Conery的Massive怎么样?
简而言之:它执行SQL查询并返回动态对象列表。
引用链接:
var result = tbl.Query("SELECT * FROM Categories");
[…]
返回的是IEnumerable
-意思是它是可塑的和令人兴奋的。它会是你在查询中返回的形状,它会有属性等等。
虽然EntityFramework确实有一个接受任意sql的CreateSourceQuery<T>
方法,但它的结果必须在编译时已知,并通过泛型参数指定。因此,这种方法可能不适合您。
有一个动态扩展库可以让你指定任意sql针对一个linq-to-sql或实体框架上下文,但如果你要切换到linq只是为了传递动态sql,我想说这是不值得的。
使用简单的数据集