У меня есть установка, где я использовал наследование Linq2SQL. Чтобы упростить запросы, я также предоставляю производные типы в DataContext, например:
public IQueryable<Derived> Derivations
{
get { return Bases.OfType<Derived>(); } // filter list on type
}
Вызов этого работает отлично, и я вижу, что SQL генерируется правильно. Тип поддержки: DataQuery .
Проблема возникает, когда я назначаю этот IEnumerable источнику данных (элементу управления или BindingSource).
Из того, что я вижу, объект DataQuery запрашивается для IListSource. И это радует это. Затем он переходит к созданию BindingList, который завершается ошибкой, поскольку параметр типа из двух предоставленных аргументов (IEnumerable и Table ) не совпадает. Возникает исключение MissingMethod, так как конструктор не может быть найден.
Простой обходной путь - просто вызвать ToList () на IQueryable перед назначением источнику данных, а затем он работает, но это довольно утомительно.
Есть какие-нибудь предложения, чтобы справиться с этим, не теряя IQueryable?
Спасибо
leppie
UPDATE:
Об ошибке теперь сообщили в MS. Подробнее здесь . Спасибо Марк!