Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Добрый день господа! Пытаюсь разобраться с WebApi oData. Сделал маленький проект веб-сервис WebApi oData и клиент WPF MVVM. Возникла следующая проблема, не передаются на клиент связанные сущности, данные с веб-сервиса приходят, но без свойств навигации. Подскажите в какую сторону копнуть, где поправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2015, 12:02 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
По этому рецепту делал? :) http://codearticles.ru/articles/2525 P.S. См. Include, чтобы транслировался $expand. context.Products.Include(p => p.Category) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2015, 16:06 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
В том числе и этим проектом руководствовался :) Пробовал я раньше жадную загрузку, не помогает в моей ситуации. Если тебя не затруднить глянь проект, может я пропустил что-то, твой код отлично работает в отличие от моего, разницу я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2015, 16:36 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоcontext.Products.Include(p => p.Category) товагищи, юзайте проекции и пребудет счастие! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2015, 17:58 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttмсущкоcontext.Products.Include(p => p.Category) товагищи, юзайте проекции и пребудет счастие! Приведи пример пожалуйста, что за проекция и как ее юзать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2015, 19:39 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Gul-79Если тебя не затруднить глянь проект, может я пропустил что-то, твой код отлично работает в отличие от моего, разницу я не вижу. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. hVosttтовагищи, юзайте проекции и пребудет счастие! Ты что несёшь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 12:37 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Только не забыть экспанд в проксе. Код: c# 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 12:43 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоТы что несёшь? проекции юзай! проекции. что непонятного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 13:05 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоТолько не забыть экспанд в проксе. Код: c# 1. 2. 3. 4. 5. Только не забыть подпереть костылём... ага, ага, щайчас! бягу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 13:05 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Gul-79Приведи пример пожалуйста, что за проекция и как ее юзать http://thedatafarm.com/data-access/use-projections-and-a-repository-to-fake-a-filtered-eager-load/ Жадная загрузка, которую предлагает МСУ, явно не от большого ума, не даёт ни возможности отфильтровать вложенные данные (допустим, исключить все удалённые, или не доступные пользователю, или ещё по миллиону причин-признаков), отдаёт всё гумно из базы что есть (это могут быть сотни тысяч строк), да и просто банальное нежелание работать мо̀̀згом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 13:39 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttмсущкоТы что несёшь? проекции юзай! проекции. что непонятного? Зачем это в odata? Клиент может запросить только то, что нужно. /odata/Products?$expand=Category&$select=Id,Name,Category/Id hVosttТолько не забыть подпереть костылём... ага, ага, щайчас! бягу! Ты о чем? Это джойн, такой же как и в EF. Этот джойн транслируется в $expand, на стороне odata слубжы формируется соответствующий IQueryable и скармливается EF. EF транслирует это в соответствующий запрос на SQL с нужными полями, джойном, фильтрами и так далее.. hVostt http://thedatafarm.com/data-access/use-projections-and-a-repository-to-fake-a-filtered-eager-load/ А причем тут OData? OData тебе и так представляет готовую инфраструктуру для формирования требуемых с клиента Query. Выбрось это и не позорься. hVosttЖадная загрузка, которую предлагает МСУ, явно не от большого ума, не даёт ни возможности отфильтровать вложенные данные (допустим, исключить все удалённые, или не доступные пользователю, или ещё по миллиону причин-признаков), отдаёт всё гумно из базы что есть (это могут быть сотни тысяч строк), да и просто банальное нежелание работать мо̀̀згом Ты идиот? Где тут ленивая зарузка? Более того, сам OData сервис из базы выберет именно эти данные, т.к. запрос транслируется в правильный SQL. Код: c# 1. 2. 3. 4. 5. 6. P.S. Еще раз прочитай, что предлагается. Предлагается - включить EnableQuery директиву, которая позволит формировать с клиента запросы. P.S. У автора тестовый проект, он тренируется работать с OData. Хочет выбрать все продукты, пусть выбирает. Но это не значит, что используется жадная загрузка. Загрузка используется такая, которую хочет клиент. Загрузку можно ограничивать с сервера средствами OData по определенным условиям. P.S. Ты недавно сам писал, что правильнее всего оперировать готовыми объектами на стороне клиента. Проще вытянуть готовый объект и скормить его бизнесу. Теперь ты говоришь обратное и противоречишь сам себе. Как понимать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 14:24 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVostt, и самого главного я не понимаю, как твой "совет" поможет автору? У него на стороне сервера не была подключена директива EnableQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 14:27 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкона стороне сервера не была подключена директива EnableQuery. Спасибо за помощь, после указания атрибута все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2015, 18:15 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоТы о чем? Это джойн, такой же как и в EF. Этот джойн транслируется в $expand, на стороне odata слубжы формируется соответствующий IQueryable и скармливается EF. EF транслирует это в соответствующий запрос на SQL с нужными полями, джойном, фильтрами и так далее.. Я о том, что ты по ходу тупо не понимаешь разницу между способом хранения данных (слой доступа к данным) и бизнес-данными. Конечно, выглядит удобно скормить в OData контекст EF и успокоиться на этом. При этом клиент получает практически прямой доступ к БД. Примерно, как дать клиенту прямой доступ к БД, только через сервис OData. Транслируется, джойны, фильтры... Что за бред ты несёшь. Через OData клиенту предоставляется доступ к тем данным, которые нужны клиенту, а не то, что и как оно у тебя в БД хранится. Ты ему бизнес отдаёшь, а не тупо трачишь БД. Это дополнительный, управляемый и полностью контролируемый слой, с безопасностью, защитой от дурака, преобразованием данных и прочим. Я не понимаю, при чём тут твоя трансляция SQL в OData? Новый вид тупого задроства? Ну тогда выкинь нафиг свой SQL и EF и отдай ему интерфейс RavenDb. Всё тож самое, JSON, запросы, фильтры, всё типа высокоуровнево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 01:06 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоА причем тут OData? OData тебе и так представляет готовую инфраструктуру для формирования требуемых с клиента Query. Выбрось это и не позорься. OData это интерфейс. А ты как школьник лишь увидел майкросовтовское позёрство, типа скормили EF в OData и уряяяя!! открываем шампусик, бухаем, задача ришена! Вот уж точно, не позорился бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 01:07 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоP.S. У автора тестовый проект, он тренируется работать с OData. Хочет выбрать все продукты, пусть выбирает. Но это не значит, что используется жадная загрузка. Загрузка используется такая, которую хочет клиент. Загрузку можно ограничивать с сервера средствами OData по определенным условиям. И ты старательно впихиваешь свою граблю человеку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 01:08 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущкоP.S. Ты недавно сам писал, что правильнее всего оперировать готовыми объектами на стороне клиента. Проще вытянуть готовый объект и скормить его бизнесу. Теперь ты говоришь обратное и противоречишь сам себе. Как понимать? Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД? Либо это ооооочень примитивное приложение, либо ты чего-то недоговариваешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 01:10 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД Поправь меня ели я ошибаюсь, ты предлагаешь сделать на подобие этого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 05:44 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Gul-79Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД Поправь меня ели я ошибаюсь, ты предлагаешь сделать на подобие этого ? 3. Domain Driven Design (*slated for release v4.0.0) то, о чём я говорю ещё не готово. реализован только слой доступа к данным через паттерн Репозитрий. ну а если этот слой напрямую прокинут в Kendo UI / Angular JS, мы получаем ковырялку данных с логикой в контроллерах. и не надо себя тешить надеждой, что если код из контроллера просто тупо вынесен в какие-то классы, чтоб "облегчить" контроллеры, который делает всё тоже самое -- жуёт Entities, и отдаёт наружу как есть, это нифига не бизнес, а лапша на постном масле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 07:20 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttЯ о том, что ты по ходу тупо не понимаешь разницу между способом хранения данных (слой доступа к данным) и бизнес-данными. Конечно, выглядит удобно скормить в OData контекст EF и успокоиться на этом. При этом клиент получает практически прямой доступ к БД. Примерно, как дать клиенту прямой доступ к БД, только через сервис OData. OData не обязана работать с базой. В OData используется модель. Откуда будут браться данные - не важно. Никакой прямого доступа у клиента нет, можно использовать ролевую модель и на основании её выдавать из контроллеров только ту информацию, которая доступна пользователю. Не неси чепухи, причем тут база? hVosttТранслируется, джойны, фильтры... Что за бред ты несёшь. Что не понятно по трансляции? Незнакомое слово? hVosttЧерез OData клиенту предоставляется доступ к тем данным, которые нужны клиенту, а не то, что и как оно у тебя в БД хранится. Ты ему бизнес отдаёшь, а не тупо трачишь БД. Это дополнительный, управляемый и полностью контролируемый слой, с безопасностью, защитой от дурака, преобразованием данных и прочим. Причем тут БД? Это у ТС модель 1 к 1 натравлена на БД в качестве примера. Какая безопасность? Тут рассматривается учебная демка из рецепта. hVosttЯ не понимаю, при чём тут твоя трансляция SQL в OData? Новый вид тупого задроства? Ну тогда выкинь нафиг свой SQL и EF и отдай ему интерфейс RavenDb. Всё тож самое, JSON, запросы, фильтры, всё типа высокоуровнево Это у автора SQL, а в OData IQueryable. Ты на стороне сервера можешь вот что угодно транслировать IQueryable. hVosttмсущкоА причем тут OData? OData тебе и так представляет готовую инфраструктуру для формирования требуемых с клиента Query. Выбрось это и не позорься. OData это интерфейс. А ты как школьник лишь увидел майкросовтовское позёрство, типа скормили EF в OData и уряяяя!! открываем шампусик, бухаем, задача ришена! Вот уж точно, не позорился бы. Какой-то эпический бред неофита, даже комментировать нечего. hVosttмсущкоP.S. Ты недавно сам писал, что правильнее всего оперировать готовыми объектами на стороне клиента. Проще вытянуть готовый объект и скормить его бизнесу. Теперь ты говоришь обратное и противоречишь сам себе. Как понимать? Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД? Либо это ооооочень примитивное приложение, либо ты чего-то недоговариваешь. А кто запрещает в OData отдавать бизнес объект? Чем "Категория товара", список которых хочет получить ТС, не является бизнес объектом? P.S. Хвост, ты и сам знаешь, что ляпнул чуть и облажался, и тебя понесло вообще куда-то в лес. Прекращай писать глупости и возьмись уже за голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 10:22 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 10:23 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущко1OData не обязана работать с базой. В OData используется модель. Откуда будут браться данные - не важно. Никакой прямого доступа у клиента нет, можно использовать ролевую модель и на основании её выдавать из контроллеров только ту информацию, которая доступна пользователю. Не неси чепухи, причем тут база? Я не выходил из контекста обсуждения, выше ты давал рецепты применительно к EF и базе данных. А теперь тя понесло во все стороны. Можно-нельзя. Не покидай контекст обсуждения мсущко1Причем тут БД? Это у ТС модель 1 к 1 натравлена на БД в качестве примера. Какая безопасность? Тут рассматривается учебная демка из рецепта. Не увиливай. "Учебный" это не оправдание говнокоду. Тем более, когда раздаешь советы. Ты дал совет применительно к БД, вот при чём. Или старость не радость, с памятью совсем плохо? мсущко1Какой-то эпический бред неофита, даже комментировать нечего. Я так и понел, что тебе нечего сказать мсущко1А кто запрещает в OData отдавать бизнес объект? Никто не запрещает, вот именно. Так какого ж фига? Я-то в курсе, что ты просто тащишься с возможности тарчинга контекста базы данных через OData, аж пищишь ))) Так что отмазоны твое не катют! мсущко1Чем "Категория товара", список которых хочет получить ТС, не является бизнес объектом? Очень плохо, что ты разницы не понимаешь. Студенту вполне простительно, но ты чо? Как тя угораздило? мсущко1P.S. Хвост, ты и сам знаешь, что ляпнул чуть и облажался, и тебя понесло вообще куда-то в лес. Прекращай писать глупости и возьмись уже за голову. Ненене, я с предмета обсуждения не съезжал. Упрямо придерживаюсь контекста! А вот тя шатает, как пьяного бедолагу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 11:31 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущко1P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво! Блин и правдо... анонимусу больше писать сюда нельзя. Грустно, ответа так и не получу Верните МСУ, хватит вредничать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 11:33 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttЯ не выходил из контекста обсуждения, выше ты давал рецепты применительно к EF и базе данных. А теперь тя понесло во все стороны. Можно-нельзя. Не покидай контекст обсуждения А чем тебе для рецепта не устроила EF модель? Меня никуда не несло в отличие от тебя. hVosttНе увиливай. "Учебный" это не оправдание говнокоду. Тем более, когда раздаешь советы. Ты дал совет применительно к БД, вот при чём. Или старость не радость, с памятью совсем плохо? А какой ты предлагаешь писать "негавнокод" в рецептах с Products и Categories? Да пусть даже Products и Categories пойдут в продуктив, какие проблемы пихнуть эти справочники общую odata модель? У тебя параноя? hVosttНикто не запрещает, вот именно. Так какого ж фига? Я-то в курсе, что ты просто тащишься с возможности тарчинга контекста базы данных через OData, аж пищишь ))) Так что отмазоны твое не катют! Так рецепт такой, вот такого и фига. Есть более сложные рецепты http://codearticles.ru/articles/2486 в который я сам пишу свой транслятор и разбираю Query, чтобы обратиться к сторонней системе (у меня в боевом сервисе это Аксапте), сформировать X++ запрос, получить данные в терминах Аксапты, перемапить их в предметную область и нормальные классы OData сервиса, и отдать клиенту. Но зачем ТС'у начинать изучать технологию с таких сложных кейсов? Какие у меня "отмазоны"? Странный ты. hVosttмсущко1Чем "Категория товара", список которых хочет получить ТС, не является бизнес объектом? Очень плохо, что ты разницы не понимаешь. Студенту вполне простительно, но ты чо? Как тя угораздило? Ну будет у меня композитный объект MyDomainType, который будет оперировать справочниками Products и Categories. В чем проблема-то? hVosttНенене, я с предмета обсуждения не съезжал. Упрямо придерживаюсь контекста! А вот тя шатает, как пьяного бедолагу Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 12:03 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttмсущко1P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво! Блин и правдо... анонимусу больше писать сюда нельзя. Грустно, ответа так и не получу Верните МСУ, хватит вредничать! Пилять, допустили параноика модерировать... Понту с такого модератора на профоруме? Кнопки бана жать? Ну круто, так можно и блондинку с форума "Учимся готовить" посадить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 12:08 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=48&tid=1356327]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 363ms |

| 0 / 0 |
