Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущко3А чем тебе для рецепта не устроила EF модель? Меня никуда не несло в отличие от тебя. Как чем, я же объяснил. EF-модель это модель данных, она представляет то, как данные хранятся, но не то, чем они являются. Например, для всех или большинства справочников может использоваться одна таблица. Но логически там могут лежать никак не связанные друг с другом данные. Да, бизнес-модель может некоторыми местами вообще не иметь особых отличий от модели EF, но всё равно -- это разные модели! Как ты запоёшь, когда услышишь советы просовывать DbContext и его модели в представление ASP.NET MVC? Правильно, отчётливо громко. А новичков часто ставит в тупик вопрос, типа нуачо я должен пыхтеть и создавать какие-то ваши вью модели?! Не хочу париться, суну контекст! Не вижу отличий с твоим примером. мсущко3А какой ты предлагаешь писать "негавнокод" в рецептах с Products и Categories? Да пусть даже Products и Categories пойдут в продуктив, какие проблемы пихнуть эти справочники общую odata модель? У тебя параноя? Это не паранойаа, это опыт. Ложка говна может даже из бочки мёда сделать бочку дурной субстанции. Зачем оно нужно? Делай сразу по уму, и новичков наставляй сразу делать по уму. А то понаучатся по всяким студенческим примерам, в том числе от майкрософт, так и кобласят в таком же стиле. Сто тысяч раз наблюдал, как программисты с десятком годов опыта за плечами до сих пор фигарят так, как их в университетах научили. И тупо не понимают, что говнокодят. Вместо того, чтобы сразу делать вменяемую архитектуру, лучше мартышкин труд, убивать клаву, вместо изящного, лёгкого, сопровождаемого программирования. Технический долг конечно всегда есть, но его надо минимизировать сразу же, в разумных пределах. Отказаться от EF модели за пределами бизнес-логики, контроллеры (не важно какие, MVC, WebAPI, OData) работают только с бизнес-моделью -- это разумные пределы и выполнимые. Не надо нарушать! мсущко3Так рецепт такой, вот такого и фига. Есть более сложные рецепты http://codearticles.ru/articles/2486 в который я сам пишу свой транслятор и разбираю Query, чтобы обратиться к сторонней системе (у меня в боевом сервисе это Аксапте), сформировать X++ запрос, получить данные в терминах Аксапты, перемапить их в предметную область и нормальные классы OData сервиса, и отдать клиенту. Но зачем ТС'у начинать изучать технологию с таких сложных кейсов? Какие у меня "отмазоны"? Странный ты. Это круто и правильно. Но речь шла именно о твоём совете, eager loading это однозначный костыль. Уверен, что разрабы могли бы не делать его, если бы не толпа школоты, которая требует возможности говнокодить. А у тебя начались отмазоны, дескать при чём тут БД ))) Я не-про-БД и не говорю. Пожалуйста, трансляторы, ок. Но зачем тебе транслятор БД через OData? Ну т.е., если это изначально не является самоцелью. мсущко3Ну будет у меня композитный объект MyDomainType, который будет оперировать справочниками Products и Categories. В чем проблема-то? Я про это и говорю. Более того, композитная модель с помощью проекции может вытаскивать данные без костылей типа Include и Load. Проекции! )) мсущко3Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь. Ну-ну. Пока ты мажешься, съезжая с темы "при чём тут БД, я тут транслирую аксапту...", я тебе объясняю теорию. Экономлю тебе на книжки )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 13:42 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Модератор, выпусти ты человека из бани, чо за беспредел? Устроили кровавый режим, панимаешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 13:46 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttКак чем, я же объяснил. EF-модель это модель данных, она представляет то, как данные хранятся, но не то, чем они являются. Например, для всех или большинства справочников может использоваться одна таблица. Но логически там могут лежать никак не связанные друг с другом данные. Да, бизнес-модель может некоторыми местами вообще не иметь особых отличий от модели EF, но всё равно -- это разные модели! Есть частные случаи, когда разумно использовать композитную модель, в которой используются классы-справочники EF. У меня есть проект, где таких однотипных простых справочников порядка 30. Зачем мне выводить их в отдельные классы - это же кретинизм чистой воды. Эти классы отлично себя чувствуют в общем бизнес модели. hVosttКак ты запоёшь, когда услышишь советы просовывать DbContext и его модели в представление ASP.NET MVC? Правильно, отчётливо громко. А новичков часто ставит в тупик вопрос, типа нуачо я должен пыхтеть и создавать какие-то ваши вью модели?! Не хочу париться, суну контекст! Не вижу отличий с твоим примером. Причем тут DbContext и модель представления? Вызывающие классы вообще ничего не знают о DbContext. Там может быть спрятано всё, что угодно - и DbContext, и контекст аксапты, сапа и еще чего угодно. Но тем не менее, некоторые чистые классы приходят от DbContext. В частности справочники. Они от того и POCO, что я могу с ними делать всё, что угодно. Это разумный подход, а не подход зомби упорыша :) hVosttЭто не паранойаа, это опыт. Да какой у тебя опыт, кому ты тут лечишь Ты дальше тестов и верстания страничек пороху не нюхал )) hVosttОтказаться от EF модели за пределами бизнес-логики, контроллеры (не важно какие, MVC, WebAPI, OData) работают только с бизнес-моделью -- это разумные пределы и выполнимые. Не надо нарушать! Это я решу, о чего надо отказываться. Отказываться от простых POCO справочников, которые есть в EF и которые нужны в доменной модели - это шизофрения. hVosttЭто круто и правильно. Но речь шла именно о твоём совете, eager loading это однозначный костыль. Уверен, что разрабы могли бы не делать его, если бы не толпа школоты, которая требует возможности говнокодить. Мой совет исходит из рецепта, о котором я сказал в самом начале. Человек делает примеры по рецепту, зачем я буду его грузить аксаптами, Query трансляторами и прочей закромой OData идеологии? Ты реально упоролся что ли? hVosttЯ про это и говорю. Более того, композитная модель с помощью проекции может вытаскивать данные без костылей типа Include и Load. Проекции! )) Никаких проекций не надо. Есть внятный на клиенте слой, который делает то, что должен делать. Как он это должен делать, через проекции или вызовов ad hoc odata запросов, фиолетово. Заканчивай свою ламерщину уже :) hVosttмсущко3Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь. Ну-ну. Пока ты мажешься, съезжая с темы "при чём тут БД, я тут транслирую аксапту...", я тебе объясняю теорию. Экономлю тебе на книжки )) Ты еще слишком соплив, чтобы мне рассказывать теорию :) Лучше читай рецепты и учись делать реальные вещи. Подчеркиваю - делать, а не голосить на форуме :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 13:58 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
И ты так и не сказал, как помогут проекции, если у ТС директива EnableQuery не была включена? Жду ответа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 14:00 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущко4Есть частные случаи, когда разумно использовать композитную модель, в которой используются классы-справочники EF. У меня есть проект, где таких однотипных простых справочников порядка 30. Зачем мне выводить их в отдельные классы - это же кретинизм чистой воды. Эти классы отлично себя чувствуют в общем бизнес модели. Ну порядок в 30 справочников уже попахивает, хотя и bydesign канеш. Хотя всё равно попахивает. Ну даладно. Я так понял ты как студент размышляешь? Типа чоябуду...блыблыблы? Аниже простые. мсущко4Причем тут DbContext и модель представления? Вызывающие классы вообще ничего не знают о DbContext. Там может быть спрятано всё, что угодно - и DbContext, и контекст аксапты, сапа и еще чего угодно. Но тем не менее, некоторые чистые классы приходят от DbContext. В частности справочники. Они от того и POCO, что я могу с ними делать всё, что угодно. Это разумный подход, а не подход зомби упорыша :) Выделенное, это фейл. Рука-зомби-лицо. Я панимаю, что ты можешь делать с ними что угодно. Никто же не запретит тебе говнокодить, так? мсущко4Это я решу, о чего надо отказываться. Отказываться от простых POCO справочников, которые есть в EF и которые нужны в доменной модели - это шизофрения. POCO-справночники, это ж надо :) Каждый день что-то новое Кста, как быстро мы переключились на справочники ))) А ведь был сложный eagger loading, который справочникам не нужен ведь, правда? Что с ним? Юзаешь Load-костыли, признавайся!? мсущко4Мой совет исходит из рецепта Т.е. ты не подумав, сказал? Просто копипаста из рецепта? мсущко4Никаких проекций не надо. Есть внятный на клиенте слой, который делает то, что должен делать. Как он это должен делать, через проекции или вызовов ad hoc odata запросов, фиолетово. Заканчивай свою ламерщину уже :) Ну чо ты позоришься. МОжет ты и не знаешь как делать проекциями, потому мнёшь булки тут? мсущко4Ты еще слишком соплив, чтобы мне рассказывать теорию :) Лучше читай рецепты и учись делать реальные вещи. Подчеркиваю - делать, а не голосить на форуме :) Ггг.. ты ещё не доучил теорию, ща ведь попросишь заценить как делать проекции, уверен на все 100! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 14:12 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
мсущко4И ты так и не сказал, как помогут проекции, если у ТС директива EnableQuery не была включена? Жду ответа. директива тут при чём? да, она нужна конечно чтобы одата заработала, но я ведь вообще не об этом говорил, а про костыль Load, изначально, да и вообще про юзание дбконтекста напрямую в контроллере. опять ворочаешься на сковороде, печёт небось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 14:14 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
hVosttНу порядок в 30 справочников уже попахивает, хотя и bydesign канеш. Хотя всё равно попахивает. Ну даладно. Я так понял ты как студент размышляешь? Типа чоябуду...блыблыблы? Аниже простые. Чем попахивает? В аксапте их больше сотни, между тем. Я же не виноват, что твой удел - это колупание сайта на 5 страниц. Ты просто не участвовал в больших проектах. Посади тебя куда-нить в биллинг Мегафона, вот там бы у тебя вообще яйца вскипели. Работал в 2008 на одном проекте по документообороту под них + интеграция с порталом на шарике. Так что твои высказывания по поводу попахивает не стоят и ломаного гроша, извини. hVosttмсущко4Причем тут DbContext и модель представления? Вызывающие классы вообще ничего не знают о DbContext. Там может быть спрятано всё, что угодно - и DbContext, и контекст аксапты, сапа и еще чего угодно. Но тем не менее, некоторые чистые классы приходят от DbContext. В частности справочники. Они от того и POCO, что я могу с ними делать всё, что угодно. Это разумный подход, а не подход зомби упорыша :) Выделенное, это фейл. Рука-зомби-лицо. Это POCO классы, они ничего не знают о контексте. А контекст, в свою очередь, всё знает о своих POCO классах. Что тебя смущает? hVosttЯ панимаю, что ты можешь делать с ними что угодно. Никто же не запретит тебе говнокодить, так? Использовать POCO для модели - это гавнокод? А что же тогда будет, если использовать POCO для POCO? Ты как всегда шедеврален. hVosttмсущко4Это я решу, о чего надо отказываться. Отказываться от простых POCO справочников, которые есть в EF и которые нужны в доменной модели - это шизофрения. POCO-справночники, это ж надо :) Каждый день что-то новое Учись, пока я не забанен жив :) hVosttКста, как быстро мы переключились на справочники ))) А ведь был сложный eagger loading, который справочникам не нужен ведь, правда? Что с ним? Юзаешь Load-костыли, признавайся!? Там Category и Product, открой глаза уже. Это справочники. На них удобно учиться по рецептам, после приходит понимание, что такое OData и как оно работает. Почти во всех мануалах по OData есть примеры с EF. Или ты предлагаешь в том рецепте транслировать Query в X++ запросы под аксапту? Под большие выборки используется фильтры в слое клиента, всё как обычно. Много не потащищь. На стороне сервера есть директивы с ограничениями. На клиенте используется ExecuteAsync. hVosttмсущко4Мой совет исходит из рецепта Т.е. ты не подумав, сказал? Просто копипаста из рецепта? Что не подумав? Я не понимаю, о чем ты. Всё, что сказано мною выше - имеет силу и сейчас. hVosttНу чо ты позоришься. МОжет ты и не знаешь как делать проекциями, потому мнёшь булки тут? Ты выучил новое слово и начал его употреблять куда ни попадя? Молодец :) Я знаю, что такое проекции, но они в задаче 100% не нужны. hVosttГгг.. ты ещё не доучил теорию, ща ведь попросишь заценить как делать проекции, уверен на все 100! Ты хочешь поговорить о проекциях в этом топике? А почему не о губной помаде, например? hVosttмсущко4И ты так и не сказал, как помогут проекции, если у ТС директива EnableQuery не была включена? Жду ответа. директива тут при чём? да, она нужна конечно чтобы одата заработала, но я ведь вообще не об этом говорил, а про костыль Load, изначально, да и вообще про юзание дбконтекста напрямую в контроллере. опять ворочаешься на сковороде, печёт небось? Директива притом, что она не давала с клиента формировать джойны, о которых просил автор. Что такое Load? Ты про ExecuteAsync? У него WPF, у него есть наблюдаемые коллекции, у него автоматом трачится контекст и обновляет модель. Тебе еще рано работать с такими типами проектов, сиди ковыряйся в проекциях лучше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2015, 16:00 |
|
||
|
Web API oData NavigationProperty равен null
|
|||
|---|---|---|---|
|
#18+
Возникла зеркальная проблема, при изменении на стороне клиента не получается изменить свойство навигации Вот такая ошибка: Код: xml 1. 2. 3. 4. 5. Подскажите, где подправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2015, 19:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1356327]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 352ms |

| 0 / 0 |
