Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# EF 4存储过程与LINQ混合_C#_.net_Linq_Entity Framework_Entity Framework 4 - Fatal编程技术网

C# EF 4存储过程与LINQ混合

C# EF 4存储过程与LINQ混合,c#,.net,linq,entity-framework,entity-framework-4,C#,.net,Linq,Entity Framework,Entity Framework 4,我有一个proc,它返回两个字段作为EF框架生成的自定义类(自定义结果的映射类)。我可以用ADO.NET EF LINQ查询加入proc结果吗?我得到的错误表明没有,但我不确定 谢谢。否,无法将结果集从Linq中的存储过程连接到实体查询。直接使用SQL也是非常困难的——我可以想象在TSQL中使用OpenQuery的一些方法,但这是一个糟糕的解决方案 如果您确实需要将存储过程的结果与一些Linq to实体查询连接起来,您应该分别执行存储过程和查询,并使用Linq to对象将它们连接起来。但请注意,

我有一个proc,它返回两个字段作为EF框架生成的自定义类(自定义结果的映射类)。我可以用ADO.NET EF LINQ查询加入proc结果吗?我得到的错误表明没有,但我不确定


谢谢。

否,无法将结果集从Linq中的存储过程连接到实体查询。直接使用SQL也是非常困难的——我可以想象在TSQL中使用OpenQuery的一些方法,但这是一个糟糕的解决方案

如果您确实需要将存储过程的结果与一些Linq to实体查询连接起来,您应该分别执行存储过程和查询,并使用Linq to对象将它们连接起来。但请注意,此解决方案将把两个操作的完整结果集传输到您的应用程序服务器,并由.NET在内存中执行联接

另一个解决方案是将存储过程重写为UDF(TSQL中的用户定义函数)。在这种情况下,您将无法使用函数结果到实体的映射,但可以将函数结果与EQL中的其他查询连接起来


在这种情况下,最好的解决方案可能是执行必要连接操作的新存储过程。

代码示例将大大提高您获得有用答案的机会。