如何重新构建实体数据模型查询以解决解析错误?这是查询:
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 ]
以下是我的问题的背景:
我正在开发一个使用Entity Framework 4的应用程序。该应用程序组织了富文本文档,称为Notes,可以通过标签搜索,如博客条目。我的一个实体数据模型查询仅检索没有标记的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表达式以避免这个问题?
感谢您的帮助。
答案 0 :(得分:4)
var selectedNotes = notes.Where(n => !n.Tags.Any())