如何重新编写实体数据模型查询以解决解析错误?以下是查询:
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表达式以避免出现问题?
谢谢你的帮助。