Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много)
При этом возможность получить полный список должна быть полностью перекрыта.
Есть идеи?
Здравствуйте, user485, Вы писали:
U>Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много) U>При этом возможность получить полный список должна быть полностью перекрыта. U>Есть идеи?
Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, user485, Вы писали:
TK>>Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу U>А почему ты решил, что у меня SQL? У меня он не используется. Данные лежат в файлах.
Ну значит, пусть в файловый запрос трансформируется
В любом случае, фильтрация делается через QueryInterceptor, а за трансформацию отвечает DataSource
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, user485, Вы писали:
TK>>Ну значит, пусть в файловый запрос трансформируется U>как оно будет трансформироваться?
Исходный Expression<> преобразуется в термины понятные источнику данных. если вы используете "не понятно что" то и делаться это будет "непонятно как"
TK>>В любом случае, фильтрация делается через QueryInterceptor, а за трансформацию отвечает DataSource U>это какой DataSource умеет делать такие магические вещи?
EF умеет. В любом случае, к WCF DataServices это уже не относится
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>если вы используете "не понятно что" то и делаться это будет "непонятно как"
Иными словами, ты предлагаешь мне поискать магический компонент, который решает эту задачу?
У меня сейчас работает через WCF Reflection Provider
Ничего подобного он не умеет.
Здравствуйте, user485, Вы писали:
U>Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много) U>При этом возможность получить полный список должна быть полностью перекрыта. U>Есть идеи?
Вы не используете ни EF, ни L2SQL? Своего QueryProvider-а у вас не написано, там? Остаются простые коллекции, которые работают через Linq 2 Objects.
Linq 2 Objects — это работа с объектами в памяти (фильтрация, сортировка, группировка).
Кто по-вашему должен уметь подгружать ваши объекты из ваших файлов? Правильно, вы! Копайте тему QueryProvider, это возможность получить дерево запроса в объектном формате и его (запроса) исполнения.
Задача нетривиальная, но мы же не ищем лёгких путей, пишем всё в свои файлы, когда на дворе уже 2012 год почти, а БД уже давно созданы для хранения структурированных данных и оптимизации запросов.
Я понимаю, что БД — это для трУсов, но может быть bulk-loader-ом залить данные в БД и использовать EF?
Здравствуйте, demigor, Вы писали:
D>Я понимаю, что БД — это для трУсов, но может быть bulk-loader-ом залить данные в БД и использовать EF?
А не всегда подходит использование БД. Мы, например, в одном из проектов вынуждены были перейти на хранение в файловой системе по причинам:
1. Заказчик отказался покупать версию SQL, устраивала только Express. Но данные поступают с такой периодичностью, что объема Express просто не хватает.
2. Так же ограничение в дисковом пространстве, т.е. в файловой системе удалось хранить данные более компактно и доступ к данным так же был на порядок шустрее, чем к SQL.