У меня есть настройка, где я использовал наследование Linq2SQL. Для того, чтобы сделать запросы проще, я разоблачить производные типы в DataContext, а также, как следующее:Linq2SQL унаследованные типы и запрос OfType
public IQueryable<Derived> Derivations
{
get { return Bases.OfType<Derived>(); } // filter list on type
}
Calling это работает отлично, и я могу видеть SQL быть правильно генерироваться. Тип поддержки - DataQuery <T>.
Проблема возникает, когда я назначаю этот IEnumerable источнику данных (либо элементу управления, либо BindingSource).
Из того, что я вижу, объект DataQuery запрашивается для IListSource. И это счастливо поставляет это. Затем он переходит к созданию BindingList, который терпит неудачу, поскольку параметр типа из 2 предоставленных аргументов (IEnumerable <Derived> и таблица <Base>) не соответствует. Это вызывает исключение MissingMethod, поскольку конструктор не может быть найден.
Простым решением является вызов ToList() на IQueryable < Производный > перед назначением источнику данных, а затем он работает, но это довольно утомительно.
Любые предложения по устранению этого без «потери» IQueryable?
Благодаря
leppie
UPDATE:
Исправлена ошибка теперь сообщается MS. Подробнее here. Спасибо, Марк!
Спасибо :) Хе-хе, я прошел длинный маршрут расследования через рефлектор :) – leppie
@leppie - увы, я уже очень хорошо знаком с маршрутом, который такие привязки берут ... –