RIA Services error
У меня есть domaindatasource с дескриптором фильтра. Это для текстового поля, используемого для поиска данных. он отфильтровывает только те имена, которые начинаются с текста. Я получаю сообщение об ошибке всякий раз, когда текст вводится в поле поиска. Часть сообщения об ошибке говорит это:
Метод "Пропустить" поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить' '
Я не могу углубиться в это и найти оператор linq, используемый фильтром только для исходного запроса. Может кто-нибудь сказать мне, где это утверждение linq или как я могу его найти?
ОБНОВИТЬ
Это полное сообщение об ошибке:
Сведения об ошибке веб-страницы Пользовательский агент: Mozilla/4.0 (совместимо; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E) Отметка времени: чт, 6 января 2011 г. 20:45:30 UTC Сообщение: Необработанная ошибка в приложении Silverlight Код приложения: 4004 Категория: ManagedRuntimeError Сообщение: System.Windows.Ria.DomainException: произошла ошибка при загрузке данных через запрос "GetEmployeesView" в DomainContext типа "AllocationContext", и ошибка не была обработана. Если ожидается эта ошибка, то вы должны обработать событие LoadedData в DomainDataSource и вызвать LoadedDataEventArgs.MarkErrorAsHandled(), чтобы избежать этого исключения. Ошибка операции загрузки для запроса 'GetEmployeesView'. Метод "Пропустить" поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'. ---> System.Windows.Ria.DomainOperationException: операция загрузки не выполнена для запроса 'GetEmployeesView'. Метод "Пропустить" поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'. --- Конец внутренней трассировки стека исключений --- в System.Windows.Ria.OperationBase.InvokeCompleteAction() в System.Windows.Ria.OperationBase.Complete(Ошибка исключения) в System.Windows.Ria.LoadOperation.Complete(Исключение ошибка) в System.Windows.Ria.DomainContext.CompleteLoad(IAsyncResult asyncResult) в System.Windows.Ria.DomainContext.<> c_ DisplayClass17.b_13 (Object) Строка: 56 Символьный: 13 Код: 0
GetEmployeesView - это запрос службы RIA domian, который возвращает список сотрудников из объекта EmployeesView (созданного из представления SQL).
1 ответ
Ваши методы RIA должны возвращать коллекцию, которая реализует IQueryable. DomainDataSource формирует свои запросы загрузки, сортировки и фильтрации за кулисами, используя LINQ Take(), Skip() и так далее. Самый простой способ "увидеть" эти запросы, если вы заинтересованы, это запустить Fiddler и посмотреть на запрос, когда он идет по проводам.