Лучший способ передать коллекции сущностей Entity Framework из DAL на бизнес-уровень? - PullRequest
2 голосов
/ 30 января 2009

У меня есть DAL, который выполняет вызовы к моей Entity Framework Model. Вызовы возвращают объекты типа IOrderedQueryable и IQueryable. Должен ли я преобразовать их в нечто более универсальное в моем DAL, например List? Но я предполагаю, что если мне не нужно перечислять всю коллекцию, это может быть расточительным ... Так какой же самый лучший подход? Просто попросите DAL вернуть IQueryable <> и преобразовать его, когда мне нужно? Или есть что-то еще более гибкое? Заранее спасибо.

1 Ответ

3 голосов
/ 31 января 2009

У меня тот же вопрос, но я не уверен, каков идеальный ответ. Я чувствую, что с возвратом DAL IQueryable <> на самом деле является наиболее гибким, потому что вы можете легко выполнить другой запрос LINQ поверх этого на другом уровне кода (при необходимости).

Еще одна вещь, которую следует учитывать, это то, что при возврате IQueryable результаты еще не загружаются в память. Так что в действительности возвращается LINQ-запрос. Таким образом, это поведение немного отличается от того, к которому люди могут привыкнуть, то есть когда что-то возвращается из модели, это фактически результаты из базы данных.

В моей ситуации мы возвращаем списки (созданные с помощью вызова IQueryable <>. ToList ()) из нашего DAL. Если этот список нужно отфильтровать, то мы создадим другой метод DAL, который вместо этого вернет отфильтрованный список. Мы выбрали это, потому что другой слой, который вызывает DAL, не должен знать, что мы используем Entity Framework таким образом (никакой зависимости не введено).

...