Поле CoolStorage не равно фильтру - PullRequest
2 голосов
/ 03 марта 2012

Я работаю над приложением Windows Phone 7 с локальной базой данных SQLite, и я немного придерживаюсь его.

У меня есть несколько классов, для каждого из которых настроено отображение, и я хочучтобы получить список с некоторыми фильтрами.Я нашел много примеров, как проверять наличие одинаковых значений, но не проверять их на неравные значения.

CSParameterCollection parameters = new CSParameterCollection();
        parameters.Add("@CurrentDate", currentDate);
        parameters.Add("@DirectionId", intVisszaut);
CSList<Trip> RouteTrips = Route.Trips.FilteredBy("Services.StartDate <= @CurrentDate and Services.EndDate >= @CurrentDate and Services." + DayOfWeek.ToString() + " = 1 and DirectionId = @DirectionId", parameters);

Этот фильтр работает без проблем, но когда я обновляю его следующим образом, он не работает:

(Services.CalendarDates.Date! = @CurrentDate and Services.CalendarDates.Date.ExceptionType! = 2)

CSParameterCollection parameters = new CSParameterCollection();
        parameters.Add("@CurrentDate", currentDate);
        parameters.Add("@DirectionId", intVisszaut);
CSList<Trip> RouteTrips = Route.Trips.FilteredBy("(Services.CalendarDates.Date != @CurrentDate and Services.CalendarDates.Date.ExceptionType != 2) and Services.StartDate <= @CurrentDate and Services.EndDate >= @CurrentDate and Services." + DayOfWeek.ToString() + " = 1 and DirectionId = @DirectionId", parameters);

Код ошибки: первое исключение типа«System.InvalidCastException» произошло в Vici.CoolStorage.WP7.dll

Службы - это OneToOne, Services.CalendarDates - это сопоставление OneToMany.Я использую слишком много значений фильтра или я делаю что-то не так?Он также не работает с помощью <>.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Синтаксис! = Не понят SQLite. Вы должны использовать <>

1 голос
/ 04 марта 2012

Что такое Services.CalendarDates.Date.ExceptionType - вы уверены, что его можно сравнить с числовым значением, например 2?

Для отладки:

  • попробуйте удалить каждую часть выражения фильтра вЧтобы определить, какая часть вызывает сбой
  • попробуйте связать с исходным кодом CoolStorage - тогда вы сможете точно увидеть, что происходит с ошибкой (хотя это может быть достаточно глубоко в их стеке и может показаться немного нечитаемым)1009 *
...