与LINQ混合的EF 4存储过程

时间:2010-11-17 15:57:36

标签: c# .net linq entity-framework entity-framework-4

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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