我正在尝试在Entity Framework 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
直接在MSSQL Studio中运行此代码完美无缺,完全没有问题。 但是,当我尝试使用实体框架运行它时:
var DataRecords = new ObjectQuery<DbDataRecord>(dataQuery, (ObjectContext) _db.ObjectContext());
它不起作用,并给我以下错误:
{“查询语法无效。近标识符'PIVOT',第17行,第31列。”}
试图弄乱语法并清除所有换行符和标签但我不断回到这个错误。
有什么想法吗?
仅供参考:我愿意接受如何将其转换为LINQ / LAMBDA的建议,或者我是否应该以一种非常不同的方式做到这一点。
答案 0 :(得分:4)
您无法使用ObjectQuery
执行原始SQL。请改用ObjectContext.ExecuteStoreQuery
。