3

Linq to SQL とストアド プロシージャを使用した呼び出しを 1 つのクエリに混在させることはできますか?

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 式に変換できないために、これが発生します。

EDIT2:

これは不可能のようです。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 に答える