查询语法在标识符“PIVOT”附近无效

Jen*_*nsB 1 sql-server-2008 entity-framework-4 c#-4.0

我正在尝试在实体框架 4 中运行动态 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
Run Code Online (Sandbox Code Playgroud)

直接在 MSSQL Studio 中运行此代码完美无缺,完全没有问题.. 但是,当我尝试使用实体框架运行此代码时:

var DataRecords = new ObjectQuery<DbDataRecord>(dataQuery, (ObjectContext) _db.ObjectContext());
Run Code Online (Sandbox Code Playgroud)

它不起作用,并给我以下错误:

{“查询语法无效。接近标识符‘PIVOT’,第 17 行,第 31 列。”}

试图弄乱语法并清除所有换行符和制表符,但我一直回到这个错误。

有任何想法吗?

仅供参考:我愿意接受有关如何将其转换为 LINQ/LAMBDA 的建议,或者我是否应该以完全不同的方式执行此操作。

Lad*_*nka 5

您不能ObjectQuery用于执行原始 SQL。使用ObjectContext.ExecuteStoreQuery来代替。