У меня есть полусложный вопрос относительно Entity Framework4, лямбда-выражений и объектов передачи данных (DTO).
Итак, у меня есть небольшой проект EF4, и, следуя установленным принципам объектно-ориентированного проектирования, у меня есть DTO, обеспечивающий уровень абстракции между потребителями данных (GUI) и моделью данных.
Мой вопрос вращается вокруг использования DTO графическим интерфейсом (и отсутствия использования графического интерфейса Entity вообще) в сочетании с необходимостью передачи лямбда-выражения в слой данных. Мой уровень данных - это базовый шаблон репозитория с добавлением. Изменить, удалить, получить, получить список и т. Д. используется графическим интерфейсом
Мой вопрос вращается вокруг использования DTO графическим интерфейсом (и отсутствия использования графического интерфейса Entity вообще) в сочетании с необходимостью передачи лямбда-выражения в слой данных. Мой уровень данных - это базовый шаблон репозитория с добавлением. Изменить, удалить, получить, получить список и т. Д. используется графическим интерфейсом
Мой вопрос вращается вокруг использования DTO графическим интерфейсом (и отсутствия использования графического интерфейса Entity вообще) в сочетании с необходимостью передачи лямбда-выражения в слой данных. Мой уровень данных - это базовый шаблон репозитория с добавлением. Изменить, удалить, получить, получить список и т. Д. Попытка реализовать метод Find с такой подписью:
public IEnumerable<VideoDTO> Find(Expression<Func<VideoEntity, bool>> exp)
...
_dataModel.Videos.Where(exp).ToList<Video>()
---
Моя проблема / беспокойство заключается в том, что "exp" должен иметь тип VideoEntity вместо VideoDTO. Я хочу сохранить разделение проблем, чтобы графический интерфейс не знал об объектах Entity. Но если я попытаюсь передать
Func<VideoDTO, bool>
, я не смогу выполнить LINQ Where для этого выражения, используя фактическую модель данных.
Есть ли способ преобразовать Func
в Func
В идеале моя подпись метода должна принимать Func
, и таким образом графический интерфейс пользователя не будет иметь ссылки на базовый объект данных.
Достаточно ли это ясно? Спасибо за вашу помощь
Спасибо за ответы вам обоим.
I ' Я попробую определить критерии поиска в объекте и использовать их в выражении LINQ. Просто начинаю с EF4 и L2S, используя это как учебный проект.
Еще раз спасибо!