linq 有没有什么方法可以执行这个SPROC并得到实体框架的结果?

d4so4syb  于 2023-02-27  发布在  其他
关注(0)|答案(3)|浏览(157)

此SPROC“返回”一个包含两列的表:Id、分数。
是否可以执行此SPROC并将自定义数据类型作为参数包含在实体框架中?

ALTER PROCEDURE [presenta].[SearchLpi] 
    // The presenta.IdTableType is a table with just one column "Id"
    @selectedLpis presenta.IdTableType READONLY
AS
BEGIN
    SET NOCOUNT ON;

    WITH Scores AS(
        SELECT
            ItemId, SUM(Score) AS Score

        FROM [Presenta].[presenta].[LpivScores]

        WHERE
            ListPropertyItemId IN (
                SELECT Id
                FROM @selectedLpis
            )

        GROUP BY
            ItemId
    )
    SELECT
        i.Id,
        s.Score
    FROM
        Scores  s,
        Items   i
    WHERE
        s.ItemId = i.Id

END

如果没有,是否有其他方法可以获得SPROC的结果并能够将此结果与另一个LINQ查询连接?

ajsxfq5m

ajsxfq5m1#

在这里,您最好直接针对表编写EF linq查询,请参阅http://msdn.microsoft.com/en-us/library/bb896341.aspx中的示例。
如果必须使用存储过程,则可以使用表作为返回类型。您需要使用返回的字段创建临时表。请参阅:http://blogs.msdn.com/bindeshv/archive/2008/11/20/using-stored-procedures-in-entity-framework.aspx

ghhkc1vu

ghhkc1vu2#

这是EF 4将带来实质性改进的领域之一,使用EF 4,您将能够拉入存储过程,并且如果该存储过程的返回值没有Map到给定的表,您可以轻松地创建一个所谓的复杂类型(基本上是一个类)来保存存储过程的返回值。
查看一些博客文章以获取示例和更多信息:

又一个值得期待的伟大新功能!

h5qlskok

h5qlskok3#

在模型的Store部分中创建DefiningQuery,并使用与存储过程的结果相对应的属性。
您可以使用XML编辑器进行编辑。Devart Entity Developer具有对DefiningQueries的设计时支持。
然后为该过程创建一个函数导入,并将返回类型设置为手工实体。
Devart团队
http://www.devart.com/dotconnect
用于Oracle、MySQL、PostgreSQL、SQLite的ADO. NET数据提供程序,支持实体框架和LINQ to SQL

相关问题