Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将ADO.net通用查询转换为实体框架或Linq_C#_Linq To Sql_Entity Framework 4.1 - Fatal编程技术网

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

C# 如何将ADO.net通用查询转换为实体框架或Linq,c#,linq-to-sql,entity-framework-4.1,C#,Linq To Sql,Entity Framework 4.1,使用较新的EF/Linq生成动态查询并返回通用数据集的最佳模式是什么 我的现有环境严重依赖于旧的ADO.net动态创建的SQL查询(作为数据集返回)。使用以下模式: -故意省略sql和参数详细信息- SqlCommand cmd = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); 这允许我们返回自定义查询,并将它们作为数据网格一般地返回

使用较新的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,即使它看起来像旧技术?

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

有一个动态扩展库,允许您针对linq to sql或实体框架上下文指定任意sql,但如果您要切换到linq只是为了传递动态sql,我认为这是不值得的

坚持使用简单的数据集。

它必须是EF/LINQ吗

对于只读查询,使用类似的方法如何? 简而言之,它执行SQL查询并返回动态对象列表

引自链接:

var result=tbl.QuerySELECT*FROM Categories

[……]

你得到的是IEnumerable——这意味着它是可延展的和令人兴奋的。它将采用您在查询中返回的任何形式,并且它将具有属性等等


哦,我的上帝!这可能是有史以来最酷的事情。我可以用两行代码返回任何通用数据集的JSON负载。哇!var presult=Massive.DB.Current.QuerySELECT*来自myTable,其中myField=@0,SomeData;Console.WriteLineJsonConvert.SerializeObjectpresult;