powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web API oData NavigationProperty равен null
33 сообщений из 33, показаны все 2 страниц
Web API oData NavigationProperty равен null
    #39010696
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день господа!

Пытаюсь разобраться с WebApi oData.

Сделал маленький проект веб-сервис WebApi oData и клиент WPF MVVM. Возникла следующая проблема, не передаются на клиент связанные сущности, данные с веб-сервиса приходят, но без свойств навигации.

Подскажите в какую сторону копнуть, где поправить?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39010758
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По этому рецепту делал? :) http://codearticles.ru/articles/2525

P.S. См. Include, чтобы транслировался $expand.

context.Products.Include(p => p.Category)
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39010761
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том числе и этим проектом руководствовался :)

Пробовал я раньше жадную загрузку, не помогает в моей ситуации.

Если тебя не затруднить глянь проект, может я пропустил что-то, твой код отлично работает в отличие от моего, разницу я не вижу.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39010785
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоcontext.Products.Include(p => p.Category)

товагищи, юзайте проекции и пребудет счастие!
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39010812
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущкоcontext.Products.Include(p => p.Category)

товагищи, юзайте проекции и пребудет счастие!

Приведи пример пожалуйста, что за проекция и как ее юзать
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011213
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gul-79Если тебя не затруднить глянь проект, может я пропустил что-то, твой код отлично работает в отличие от моего, разницу я не вижу.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[EnableQuery]
public IHttpActionResult GetProducts(ODataQueryOptions<Product> queryOptions)
{
    try
    {
        queryOptions.Validate(ValidationSettings);
        return Ok(Context.Products);
    }
    catch (ODataException ex)
    {
        return BadRequest(ex.Message);
    }
}



hVosttтовагищи, юзайте проекции и пребудет счастие!
Ты что несёшь?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011223
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только не забыть экспанд в проксе.

Код: c#
1.
2.
3.
4.
5.
public async Task LoadProducts()
{
    var items = await Context.Products.Expand(p => p.Category).ExecuteAsync();
    _products.Load(items);
}
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011263
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоТы что несёшь?

проекции юзай! проекции. что непонятного?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011264
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоТолько не забыть экспанд в проксе.

Код: c#
1.
2.
3.
4.
5.
public async Task LoadProducts()
{
    var items = await Context.Products.Expand(p => p.Category).ExecuteAsync();
    _products.Load(items);
}



Только не забыть подпереть костылём... ага, ага, щайчас! бягу!
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011330
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gul-79Приведи пример пожалуйста, что за проекция и как ее юзать

http://thedatafarm.com/data-access/use-projections-and-a-repository-to-fake-a-filtered-eager-load/

Жадная загрузка, которую предлагает МСУ, явно не от большого ума, не даёт ни возможности отфильтровать вложенные данные (допустим, исключить все удалённые, или не доступные пользователю, или ещё по миллиону причин-признаков), отдаёт всё гумно из базы что есть (это могут быть сотни тысяч строк), да и просто банальное нежелание работать мо̀̀згом
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011392
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
var items = await Context.Products
    .Expand(x => x.Category)
    .Select(x => new { x.Id, x.Name })
    .Where(x => x.Name.Contains("хвост нещадно тупит"))
    .Take(3)
    .ExecuteAsync();



P.S. Еще раз прочитай, что предлагается. Предлагается - включить EnableQuery директиву, которая позволит формировать с клиента запросы.

P.S. У автора тестовый проект, он тренируется работать с OData. Хочет выбрать все продукты, пусть выбирает. Но это не значит, что используется жадная загрузка. Загрузка используется такая, которую хочет клиент. Загрузку можно ограничивать с сервера средствами OData по определенным условиям.

P.S. Ты недавно сам писал, что правильнее всего оперировать готовыми объектами на стороне клиента. Проще вытянуть готовый объект и скормить его бизнесу. Теперь ты говоришь обратное и противоречишь сам себе. Как понимать?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011397
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, и самого главного я не понимаю, как твой "совет" поможет автору? У него на стороне сервера не была подключена директива EnableQuery.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011657
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мсущкона стороне сервера не была подключена директива EnableQuery.

Спасибо за помощь, после указания атрибута все заработало.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011806
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоТы о чем? Это джойн, такой же как и в EF. Этот джойн транслируется в $expand, на стороне odata слубжы формируется соответствующий IQueryable и скармливается EF. EF транслирует это в соответствующий запрос на SQL с нужными полями, джойном, фильтрами и так далее..

Я о том, что ты по ходу тупо не понимаешь разницу между способом хранения данных (слой доступа к данным) и бизнес-данными. Конечно, выглядит удобно скормить в OData контекст EF и успокоиться на этом. При этом клиент получает практически прямой доступ к БД. Примерно, как дать клиенту прямой доступ к БД, только через сервис OData.

Транслируется, джойны, фильтры... Что за бред ты несёшь.

Через OData клиенту предоставляется доступ к тем данным, которые нужны клиенту, а не то, что и как оно у тебя в БД хранится. Ты ему бизнес отдаёшь, а не тупо трачишь БД. Это дополнительный, управляемый и полностью контролируемый слой, с безопасностью, защитой от дурака, преобразованием данных и прочим.

Я не понимаю, при чём тут твоя трансляция SQL в OData? Новый вид тупого задроства? Ну тогда выкинь нафиг свой SQL и EF и отдай ему интерфейс RavenDb. Всё тож самое, JSON, запросы, фильтры, всё типа высокоуровнево
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011807
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоА причем тут OData? OData тебе и так представляет готовую инфраструктуру для формирования требуемых с клиента Query. Выбрось это и не позорься.

OData это интерфейс. А ты как школьник лишь увидел майкросовтовское позёрство, типа скормили EF в OData и уряяяя!! открываем шампусик, бухаем, задача ришена!

Вот уж точно, не позорился бы.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011808
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоP.S. У автора тестовый проект, он тренируется работать с OData. Хочет выбрать все продукты, пусть выбирает. Но это не значит, что используется жадная загрузка. Загрузка используется такая, которую хочет клиент. Загрузку можно ограничивать с сервера средствами OData по определенным условиям.

И ты старательно впихиваешь свою граблю человеку?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011809
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоP.S. Ты недавно сам писал, что правильнее всего оперировать готовыми объектами на стороне клиента. Проще вытянуть готовый объект и скормить его бизнесу. Теперь ты говоришь обратное и противоречишь сам себе. Как понимать?

Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД? Либо это ооооочень примитивное приложение, либо ты чего-то недоговариваешь.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011842
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД

Поправь меня ели я ошибаюсь, ты предлагаешь сделать на подобие этого ?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011851
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gul-79Под объектом я понимаю бизнес-объект. А не сущность в БД. В БД мой объект может быть разложен по 10-ку и больше таблиц, а клиенту нафиг это надо знать вообще, как у меня устроена БД

Поправь меня ели я ошибаюсь, ты предлагаешь сделать на подобие этого ?

3. Domain Driven Design (*slated for release v4.0.0)

то, о чём я говорю ещё не готово. реализован только слой доступа к данным через паттерн Репозитрий.

ну а если этот слой напрямую прокинут в Kendo UI / Angular JS, мы получаем ковырялку данных с логикой в контроллерах. и не надо себя тешить надеждой, что если код из контроллера просто тупо вынесен в какие-то классы, чтоб "облегчить" контроллеры, который делает всё тоже самое -- жуёт Entities, и отдаёт наружу как есть, это нифига не бизнес, а лапша на постном масле.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011933
мсущко1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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. Хвост, ты и сам знаешь, что ляпнул чуть и облажался, и тебя понесло вообще куда-то в лес. Прекращай писать глупости и возьмись уже за голову.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39011935
мсущко1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво!
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012039
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко1OData не обязана работать с базой. В OData используется модель. Откуда будут браться данные - не важно. Никакой прямого доступа у клиента нет, можно использовать ролевую модель и на основании её выдавать из контроллеров только ту информацию, которая доступна пользователю. Не неси чепухи, причем тут база?

Я не выходил из контекста обсуждения, выше ты давал рецепты применительно к EF и базе данных. А теперь тя понесло во все стороны. Можно-нельзя. Не покидай контекст обсуждения

мсущко1Причем тут БД? Это у ТС модель 1 к 1 натравлена на БД в качестве примера. Какая безопасность? Тут рассматривается учебная демка из рецепта.

Не увиливай. "Учебный" это не оправдание говнокоду. Тем более, когда раздаешь советы. Ты дал совет применительно к БД, вот при чём. Или старость не радость, с памятью совсем плохо?

мсущко1Какой-то эпический бред неофита, даже комментировать нечего.

Я так и понел, что тебе нечего сказать

мсущко1А кто запрещает в OData отдавать бизнес объект?

Никто не запрещает, вот именно. Так какого ж фига? Я-то в курсе, что ты просто тащишься с возможности тарчинга контекста базы данных через OData, аж пищишь ))) Так что отмазоны твое не катют!

мсущко1Чем "Категория товара", список которых хочет получить ТС, не является бизнес объектом?

Очень плохо, что ты разницы не понимаешь. Студенту вполне простительно, но ты чо? Как тя угораздило?

мсущко1P.S. Хвост, ты и сам знаешь, что ляпнул чуть и облажался, и тебя понесло вообще куда-то в лес. Прекращай писать глупости и возьмись уже за голову.

Ненене, я с предмета обсуждения не съезжал. Упрямо придерживаюсь контекста! А вот тя шатает, как пьяного бедолагу
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012044
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко1P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво!

Блин и правдо... анонимусу больше писать сюда нельзя. Грустно, ответа так и не получу

Верните МСУ, хватит вредничать!
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012092
мсущко3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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Ненене, я с предмета обсуждения не съезжал. Упрямо придерживаюсь контекста! А вот тя шатает, как пьяного бедолагу
Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012101
мсущко3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущко1P.S. Новая ветвь эпического кретинизма Сержа, он наплакался Джуджу, чтобы в форуме забанили гуестов. Браво!

Блин и правдо... анонимусу больше писать сюда нельзя. Грустно, ответа так и не получу

Верните МСУ, хватит вредничать!
Пилять, допустили параноика модерировать... Понту с такого модератора на профоруме? Кнопки бана жать? Ну круто, так можно и блондинку с форума "Учимся готовить" посадить...
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012272
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко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Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь.

Ну-ну. Пока ты мажешься, съезжая с темы "при чём тут БД, я тут транслирую аксапту...", я тебе объясняю теорию. Экономлю тебе на книжки ))
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012279
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор, выпусти ты человека из бани, чо за беспредел? Устроили кровавый режим, панимаешь...
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012302
мсущко4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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Ты просто облажался и ляпнул не в тему. Теперь расхлебываешь.
Ну-ну. Пока ты мажешься, съезжая с темы "при чём тут БД, я тут транслирую аксапту...", я тебе объясняю теорию. Экономлю тебе на книжки ))
Ты еще слишком соплив, чтобы мне рассказывать теорию :) Лучше читай рецепты и учись делать реальные вещи. Подчеркиваю - делать, а не голосить на форуме :)
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012305
мсущко4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ты так и не сказал, как помогут проекции, если у ТС директива EnableQuery не была включена? Жду ответа.
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012329
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко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!
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012332
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко4И ты так и не сказал, как помогут проекции, если у ТС директива EnableQuery не была включена? Жду ответа.

директива тут при чём? да, она нужна конечно чтобы одата заработала, но я ведь вообще не об этом говорил, а про костыль Load, изначально, да и вообще про юзание дбконтекста напрямую в контроллере. опять ворочаешься на сковороде, печёт небось?
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39012468
мсущко9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, у него есть наблюдаемые коллекции, у него автоматом трачится контекст и обновляет модель. Тебе еще рано работать с такими типами проектов, сиди ковыряйся в проекциях лучше :)
...
Рейтинг: 0 / 0
Web API oData NavigationProperty равен null
    #39021264
Gul-79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла зеркальная проблема, при изменении на стороне клиента не получается изменить свойство навигации

Вот такая ошибка:

Код: xml
1.
2.
3.
4.
5.
"error":{
    "code":"","message":"No HTTP resource was found that matches the request URI 'http://localhost:19567/odata/Products(8c608281-4fdd-4528-badc-ac44142a8d37)/Category/$ref'.","innererror":{
      "message":"No routing convention was found to select an action for the OData path with template '~/entityset/key/navigation/$ref'.","type":"","stacktrace":""
    }
  }



Подскажите, где подправить?
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web API oData NavigationProperty равен null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]