Как можно переформулировать запрос модели данных сущностей, чтобы обойти ошибку синтаксического анализа? Вот запрос:
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, которые можно искать по тегам, например записи в блоге. Один из моих запросов Entity Data Model извлекает только примечания, которые не имеют тегов:
searchResults = DataStore.ObjectContext.Notes.WhereContainsNoTags();
WhereContainsNoTags()
записывается как метод расширения LINQ и содержит лямбда-выражение для запроса:
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;
}
Для простоты я опустил блок try-catch, который оборачивает лямбда-выражение, и код регистрации, который регистрирует любые ошибки.
Вот странная часть: запрос отлично работает на моей машине для разработки, но он выдает вышеупомянутое исключение на тестовой машине. У меня есть несколько других запросов (сопоставить все теги, сопоставить любые теги и т. Д.), Которые отлично работают как на компьютерах разработчиков, так и на тестовых компьютерах.
Я утверждаю, что исключение относится к SQL, сгенерированному запросом EDM. Это тот случай? Какой лучший обходной путь? Есть ли способ переформулировать лямбда-выражение, чтобы избежать проблемы?
Спасибо за вашу помощь.