1
如何重新配置實體數據模型查詢以解決分析錯誤?下面是該查詢:重新構建EF4查詢以避免解析錯誤?
var selectedNotes = notes
.Where(n => n.Tags.Count == 0)
,這裏是正被拋出的異常:
There was an error parsing the query. [ Token line number = 12,Token line offset = 53,Token in error = AS ]
這裏的背景是我的問題:
我對使用實體的應用程序工作框架4.該應用程序組織稱爲Notes的富文本文檔,可以通過標籤進行搜索,例如博客條目。我的一個實體數據模型的查詢只檢索沒有標籤註釋:
searchResults = DataStore.ObjectContext.Notes.WhereContainsNoTags();
WhereContainsNoTags()
寫成一個LINQ擴展方法,它包含查詢的lambda表達式:
public static IQueryable<Note> WhereContainsNoTags(this IQueryable<Note> notes)
{
IQueryable<Note> results;
// Select Notes that contain no search Tags
var selectedNotes = notes
.Where(n => n.Tags.Count == 0)
.OrderBy(n => n.Title);
results = selectedNotes;
// Set return value
return results;
}
爲了簡化,我省略了包裝lambda表達式的try-catch塊和記錄任何錯誤的日誌記錄代碼。
這是奇怪的部分:查詢在我的開發機器上運行良好,但它在測試機器上引發上述異常。我還有其他幾個查詢(匹配所有標籤,匹配任何標籤等),這些查詢在開發和測試機器上運行良好。
我在斷定異常與EDM查詢生成的SQL有關。是這樣嗎?什麼是最好的解決方法?有沒有辦法重新構造lambda表達式來避免這個問題?
感謝您的幫助。
謝謝,但這不會真的幫助我 - 它將選擇不包含任何指定標記集的Notes。我想選擇根本沒有標籤的Notes。 – 2010-08-09 00:10:11
不確定「指定的一組標籤」是什麼意思。如果集合中至少有一個元素,則Any()返回「true」,如果集合中有0個元素,則返回「false」。因此「!n.Tags.Any()」和「n.Tags.Count == 0」將始終返回相同的值。 – Yakimych 2010-08-09 07:29:15
現在我明白了!謝謝您的幫助。接受和+1。 – 2010-08-09 14:45:46