混合实体框架Linq与存储过程



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

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

像这样,其中GetAssetAttributeLastStatusHistory是一个映射到存储过程的函数导入。

我想在SQL中而不是在内存中执行此操作。在内存中,我可以为每个资产设置a。

我需要执行分页和过滤,如果查询在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表达式。

EDIT2:

这似乎是不可能的。这在RAW SQL和LINQ中都是不可能的。

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

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 };

正如Ralph Shillington所说。不可能将EntityFramework Linq与对进程的调用混合使用。

相关内容

  • 没有找到相关文章

最新更新