Я строю свой запрос, используя PredicateBuilder из LinqKit. это здорово и делает именно то, что я ищу.EntityFramework Проблемы с литьем
Для того, чтобы мой код более многократного использования (таблицы и представления) я создал обобщенный класс предикат строитель:
public class LocalPredicateBuilder<T> where T : IResort
...
var predicate = PredicateBuilder.True<T>(
который предоставляет метод BuildPredicate. Я могу использовать его как это:
var predicate = new LocalPredicateBuilder<Resort>().BuildPredicate();
var resorts = _entities.Resorts.Where(predicate).ToList();
Однако, когда я пытаюсь сделать это, я получаю эту ошибку во время выполнения (кстати сущность и объекты реализации IResort): Невозможно бросить тип «ConsoleApplication1.Entities.Resort» в type 'ConsoleApplication1.Entities.IResort'. LINQ к Entities поддерживает только литье Модель Entity Data примитивные типы
я попытался литья (не работает):
var rlist = eq.Cast<Resort>().ToList();
Любой другой путь я могу получить вокруг этого вопроса литья?
UPDATE
не имея много удачи, получая предикаты для работы с использованием интерфейсов .. поэтому я solved my problem by going with POCOs.
У меня есть. не смог бы скомпилировать иначе –
ok, то это проблема, которую я добавил после моего редактирования. –
запрос действительно возвращает список, поэтому это должно быть возможно сделать. ISomething используется только для создания предикатов, используемых в запросе. –