3

是否可以在单个查询中混合使用 Linq to SQL 和存储过程的调用?

var query = from asset in this.Context.Assets
            let status =  this.Context.GetAssetAttributeLastStatusHistory(asset.idAsset)
            select new { asset, status };

像这样,GetAssetAttributeLastStatusHistory映射到存储过程的函数导入在哪里。

我想在 SQL 中而不是在内存中。在内存中,我可以为每个资产创建一个。

我需要执行分页和过滤,如果查询在 SQL Server 中执行,它的性能会更好。

编辑:此代码生成异常。 Yes I did. I get an exception. LINQ to Entities does not recognize the method 'System.Data.Objects.ObjectResult.. GetAssetAttributeLastStatusHistory(System.Nullable1[System.Guid])' method, and this method cannot be translated into a store expression.

据我所知,这是因为框架无法将该表达式转换为 SQL 表达式。

编辑2:

看来这是不可能的。在 RAW SQL 和 LINQ 中都不可能。感谢您的输入。

4

2 回答 2

1

试试看,让我知道我的答案是否正确。

var query = from asset in this.Context.Assets
            join status 
            this.Context.GetAssetAttributeLastStatusHistory(asset.idAsset) 
            on asset.Id equals status.Id into g
            from g.DefaultIfEmpty()
            select new { asset, status };
于 2013-01-15T16:45:12.210 回答
0

正如拉尔夫·希灵顿所说。不能将 EntityFramework Linq 与对 sprocs 的调用混合使用。

于 2013-02-28T15:55:00.480 回答