Здравствуйте, user485, Вы писали:
U>Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много) U>При этом возможность получить полный список должна быть полностью перекрыта. U>Есть идеи?
Делайте QueryInterceptor. Его результат трансформируется в SQL запрос и уйдет в базу
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Есть WCF Data Service. Он возвращает несколько списков entity (записей много). Хочется сделать так, чтобы клиенту возвращались не все entity, а только их часть по заданному критерию. Причем фильтровать надо не после того, как все энтити созданы в памяти, а до (потому что их может быть реально очень много)
При этом возможность получить полный список должна быть полностью перекрыта.
Есть идеи?
Здравствуйте, 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.