1

EntityFramework4で動的SQLクエリを実行しようとしています

クエリを文字列として作成しました。次のようになります。

SELECT 
    NodeID 
    ,RowID 
    ,[Comment]
    ,[Subject]
    ,[Text] 
FROM 
    (SELECT 
        nr.Node_ID as NodeID 
        ,nr.ID as RowID 
        ,f.Name 
        ,d.Value 
    FROM NoteNode.dbo.[NodeRows] AS nr 
    LEFT JOIN NoteNode.dbo.[NodeData] AS d ON nr.ID = d.NodeRow_ID 
    LEFT JOIN NoteNode.dbo.[NodeFields] AS f ON f.ID = d.Field_ID 
    WHERE nr.Node_ID = (1) ) AS x 
    PIVOT 
    ( 
        MAX(Value) 
        for Name IN ([Comment],[Subject],[Text]) 
    ) AS p

このコードをMSSQLStudioで直接実行すると、問題はまったく発生しません。ただし、これを使用してエンティティフレームワークを使用してこれを実行しようとすると、次のようになります。

var DataRecords = new ObjectQuery<DbDataRecord>(dataQuery, (ObjectContext) _db.ObjectContext());

それは機能せず、次のエラーが発生します。

{"クエリ構文が無効です。識別子'PIVOT'の近く、17行31列目。"}

構文を少しいじって、すべての改行とタブをクリアしようとしましたが、このエラーが繰り返し発生します。

何か案は?

参考までに:これをLINQ / LAMBDAに変換する方法、またはこれをまったく異なる方法で行う必要があるかどうかについての提案を受け付けています。

4

1 に答える 1

5

ObjectQuery生の SQL の実行には使用できません。ObjectContext.ExecuteStoreQuery代わりに使用してください。

于 2013-01-08T16:04:41.460 に答える