MickMS
@MickMS
человек

Выбор данных из двух и более таблиц, Entity Framework?

Всем доброго времени суток, просьба помочь в деле, сижу уже третий день и не могу понять по какой причине в SQL Management Studio данные запросом выбираются корректно а при использовании EF иначе.
Необходимо сделать отображение объявления как на авто или авито не важно, с использованием изображений.
В общем имеется куча связанных таблиц более чем две ,это пользователи, комментарии к объявлению, марка авто, модель, характеристики, и изображения. Чтобы не гонять туда суда огромный запрос, либо на Linq либо на прямом SQL через SQlQuery я создал представление в БД, с использованием всех этих таблиц:
9af18a621497425a8260446cf51fd537.png
Сам запрос к этому представлению с выборкой по Id-у объявления в SQLManagement:
2045b411a4be49d18e2e2aa707fad08f.png
Суть в том что возвращаются разные данные в столбце PathPhoto я это сделал для того чтобы потом уже при возврате данных непосредственно на сервере в коде выбрать из этого столбца нужные мне значения для отображения на странице.
Но вот парадокс или мой косяк, где, уже все перепробовал, от работы с обычными типами и Linq до прямых запросов, данные возвращаются одни и те же это заметно по возвращаемым значениям столбца или уже свойства PаthPhoto в перечислении:
0ee6a45ee8e545bebdd6cb205b396e98.png
Использовать представления решил по той причине, что размер запроса реально велик, там учитываются более 10 столбцов, и несколько таблиц, думаю разумнее сделать его на сервере, выбор пал на представления. хотя как читал можно и функцию использовать которая возвращает мне нужные данные, правда опыта нет с этим пока, а уже сроки сдачи курсовой жмут. Вот и решил попробовать так. Еще фишка с изошками, ранее я делал отдельный запрос к таблице Images где выбирал нужные мне изо по Id-у, но подумал, что как то не совсем хорош получается сразу к одной странице два запроса делать... А если в бой вступает EF как я уже сам убедился. запрос просто раздувается как незнамо кто и что, и что еще страшнее становится вложенным.. когда, допустим делаю так :
repository.AutoAdvertisenment.Where(p=>p.Id==idAdvert).Select(p=>new{BodyText=p.Comment,etc...});

Просьба описать, что можно решить, я уже просто опустил руки с этой возней:) Хотя бы на словах, в какую рыть сторону. И правильно ли я поступил в данной ситуации?
  • Вопрос задан
  • 3354 просмотра
Решения вопроса 1
@asdz
Я думаю, что на этапе создания прототипа, не надо заморачиваться с представлениями, лучше делайте чтобы быстрее получить работающий вариант. На самом деле время на обмен sql запросом гораздо меньше других факторов влияющих на производительность при использовании EF (change tracking, оптимальность запроса и т.д.) Все равно, если вы захотите чтобы очень быстро все работало - EF может и не подойти (dapper в помощь). По поводу вашей проблемы, без разбора запросов неясно что там происходит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы