Entity Framework:- Ошибка при приведении к производному исключения класса броска в таблице на запрос иерархии

Я столкнулся с исключением при попытке привести к производному классу; Невозможно привести тип "к типу". LINQ to Entities поддерживает только приведение типов примитивов и перечислений EDM.

 (obj => ((DerivedClass)obj).DerivedProperty == true);

3 ответа

Решение

Спасибо всем за вашу помощь; Я решил проблему, используя оператор as вместо прямого приведения; Я не знаю причину, но это решило мою проблему.

obj => (obj as DerivedClass).DerivedProperty == true;

Скорее всего, ваша проблема решена с помощью метода IQueryable.OfType(), чтобы начать ваш запрос, но вы должны опубликовать более подробную информацию о том, что вы делаете.

Мое лучшее предположение состоит в том, что вы пытаетесь выполнить приведение перед выполнением оператора SQL, и LINQ to Entities не имеет представления о том, как преобразовать это в SQL.

Один из вариантов - выполнить SQL-запрос перед выполнением приведения, а затем LINQ to Objects сможет справиться с этим. Предупреждение: это может привести к проблеме N+1.

Возможно, есть более умное решение, но без большего количества кода это мое лучшее предположение.

Другие вопросы по тегам