Информация об изменениях

Сообщение Re[5]: Entity Framework за! и против! от 18.08.2014 13:34

Изменено 18.08.2014 13:39 gandjustas

Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, gandjustas, Вы писали:


G>>Я предполагаю что получится такой набор методов в репозитариях:


G>>
G>>IEnumerable<PostData> GetPostsByDate(int start, int pageSize);
G>>IEnumerable<PostData> GetPostsByComments(int start, int pageSize);
G>>IEnumerable<PostData> GetPostsByScore(int start, int pageSize);
G>>


V>Я в репозиторий передаю наследников такого класса:


V>
  DataFetch.cs
V>
V>public class DataFetch
V>{
V>   //Skipped
V>}




Поздравляю, вы изобрели свой IQueryable<T>, только гораздо более слабый и неудобный в использовании.

Например текстовое поле SortBy как будет работать? Там же нужно считать агрегаты по связанным таблицам, поэтому просто передать Sort в ORDER BY не выйдет. В зависимости от значения Sort надо будет генерировать разные запросы, а это не решает исходную проблему. При добавлении сценария UI — надо править репозиторий, только вы скрыли проблему из интерфейса репозиториев и спрятали её в реализацию.

Также со временем ваш DataFetch распухнет, что его надежно использовать станет сложно.

Предположим в том же кейсе понадобилось добавить фильтр по тегам для трех описанных выше выборок, а также добавился ее один экран, где надо показывать посты текущего пользователя (без фильтра по тегам).
Вы сделаете два разных DataFetch или будете кидать эксепшн на некорректном сочетании параметров?
Re[5]: Entity Framework за! и против!
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, gandjustas, Вы писали:


G>>Я предполагаю что получится такой набор методов в репозитариях:


G>>
G>>IEnumerable<PostData> GetPostsByDate(int start, int pageSize);
G>>IEnumerable<PostData> GetPostsByComments(int start, int pageSize);
G>>IEnumerable<PostData> GetPostsByScore(int start, int pageSize);
G>>


V>Я в репозиторий передаю наследников такого класса:


V>DataFetch.cs

V>
V>public class DataFetch
V>{
V>   //Skipped
V>}



Поздравляю, вы изобрели свой IQueryable<T>, только гораздо более слабый и неудобный в использовании.

Например текстовое поле SortBy как будет работать? Там же нужно считать агрегаты по связанным таблицам, поэтому просто передать Sort в ORDER BY не выйдет. В зависимости от значения Sort надо будет генерировать разные запросы, а это не решает исходную проблему. При добавлении сценария UI — надо править репозиторий, только вы скрыли проблему из интерфейса репозиториев и спрятали её в реализацию.

Также со временем ваш DataFetch распухнет, что его надежно использовать станет сложно.

Предположим в том же кейсе понадобилось добавить фильтр по тегам для трех описанных выше выборок, а также добавился ее один экран, где надо показывать посты текущего пользователя (без фильтра по тегам).
Вы сделаете два разных DataFetch или будете кидать эксепшн на некорректном сочетании параметров?