[WCF] посоветуйте как сделать фильтрацию
От: user485  
Дата: 25.11.11 04:37
Оценка:
Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много)
При этом возможность получить полный список должна быть полностью перекрыта.
Есть идеи?
Re: [WCF] посоветуйте как сделать фильтрацию
От: TK Лес кывт.рф
Дата: 25.11.11 04:51
Оценка: 1 (1)
Здравствуйте, user485, Вы писали:

U>Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много)

U>При этом возможность получить полный список должна быть полностью перекрыта.
U>Есть идеи?

Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: [WCF] посоветуйте как сделать фильтрацию
От: user485  
Дата: 25.11.11 04:54
Оценка:
Здравствуйте, TK, Вы писали:

TK>Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу


А почему ты решил, что у меня SQL? У меня он не используется. Данные лежат в файлах.
Re[3]: [WCF] посоветуйте как сделать фильтрацию
От: TK Лес кывт.рф
Дата: 25.11.11 05:18
Оценка:
Здравствуйте, user485, Вы писали:

TK>>Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу

U>А почему ты решил, что у меня SQL? У меня он не используется. Данные лежат в файлах.

Ну значит, пусть в файловый запрос трансформируется
В любом случае, фильтрация делается через QueryInterceptor, а за трансформацию отвечает DataSource
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: [WCF] посоветуйте как сделать фильтрацию
От: user485  
Дата: 25.11.11 07:37
Оценка:
Здравствуйте, TK, Вы писали:

TK>Ну значит, пусть в файловый запрос трансформируется


как оно будет трансформироваться?

TK>В любом случае, фильтрация делается через QueryInterceptor, а за трансформацию отвечает DataSource


это какой DataSource умеет делать такие магические вещи?
Re[5]: [WCF] посоветуйте как сделать фильтрацию
От: TK Лес кывт.рф
Дата: 27.11.11 16:36
Оценка:
Здравствуйте, user485, Вы писали:

TK>>Ну значит, пусть в файловый запрос трансформируется

U>как оно будет трансформироваться?

Исходный Expression<> преобразуется в термины понятные источнику данных. если вы используете "не понятно что" то и делаться это будет "непонятно как"

TK>>В любом случае, фильтрация делается через QueryInterceptor, а за трансформацию отвечает DataSource

U>это какой DataSource умеет делать такие магические вещи?

EF умеет. В любом случае, к WCF DataServices это уже не относится
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: [WCF] посоветуйте как сделать фильтрацию
От: user485  
Дата: 28.11.11 04:06
Оценка:
Здравствуйте, TK, Вы писали:

TK>если вы используете "не понятно что" то и делаться это будет "непонятно как"


Иными словами, ты предлагаешь мне поискать магический компонент, который решает эту задачу?
У меня сейчас работает через WCF Reflection Provider
Ничего подобного он не умеет.
Re: [WCF] посоветуйте как сделать фильтрацию
От: demigor  
Дата: 28.11.11 10:36
Оценка:
Здравствуйте, user485, Вы писали:

U>Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много)

U>При этом возможность получить полный список должна быть полностью перекрыта.
U>Есть идеи?

Вы не используете ни EF, ни L2SQL? Своего QueryProvider-а у вас не написано, там? Остаются простые коллекции, которые работают через Linq 2 Objects.

Linq 2 Objects — это работа с объектами в памяти (фильтрация, сортировка, группировка).

Кто по-вашему должен уметь подгружать ваши объекты из ваших файлов? Правильно, вы! Копайте тему QueryProvider, это возможность получить дерево запроса в объектном формате и его (запроса) исполнения.
Задача нетривиальная, но мы же не ищем лёгких путей, пишем всё в свои файлы, когда на дворе уже 2012 год почти, а БД уже давно созданы для хранения структурированных данных и оптимизации запросов.
Я понимаю, что БД — это для трУсов, но может быть bulk-loader-ом залить данные в БД и использовать EF?
Re[2]: [WCF] посоветуйте как сделать фильтрацию
От: mrjeka Россия  
Дата: 29.11.11 09:01
Оценка:
Здравствуйте, demigor, Вы писали:

D>Я понимаю, что БД — это для трУсов, но может быть bulk-loader-ом залить данные в БД и использовать EF?


А не всегда подходит использование БД. Мы, например, в одном из проектов вынуждены были перейти на хранение в файловой системе по причинам:
1. Заказчик отказался покупать версию SQL, устраивала только Express. Но данные поступают с такой периодичностью, что объема Express просто не хватает.
2. Так же ограничение в дисковом пространстве, т.е. в файловой системе удалось хранить данные более компактно и доступ к данным так же был на порядок шустрее, чем к SQL.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.