代码之家  ›  专栏  ›  技术社区  ›  Brian Mains

ef 4与linq混合的存储过程

  •  0
  • Brian Mains  · 技术社区  · 14 年前

    我有一个proc,它返回两个字段作为由ef框架生成的自定义类(自定义结果的映射类)。我可以用ado.net ef linq查询加入proc结果吗?我犯了错误,但我不确定。

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   BenMorel Manish Pradhan    11 年前

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

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

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

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