是否可以在单个查询中混合使用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与对进程的调用混合使用。