С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86

Выборка данных из нескольких таблиц (EF)

10.03.2013, 18:14. Показов 4078. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите разобраться в проблеме: Пытаюсь получить данные из базы, пишу запрос
C#
1
2
3
4
5
6
7
8
9
  public ActionResult Index()
        {
            dealdbEntities entities = new dealdbEntities();
            var req = (from deal in entities.deals
                       where deal.deal_ID == 10001 //для примера 
                       select deal).FirstOrDefault();
            if (req == null) return View("NotFound");
            return View(req);
        }
Вроде бы код выполняется и в представление передается объект. Данные из таблицы deal, deal_category выводятся без проблем, а вот город и цены не могу получить. Отношения между таблицами следующие: deal : deal_category и deal : price - (1:M), deal : city (M:M) - использует промежуточную таблицу с составными ключами.

модель события
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public partial class deal
    {
        public deal()
        {
            this.comments = new HashSet<comment>();
            this.coupons = new HashSet<coupon>();
            this.deal_image = new HashSet<deal_image>();
            this.prices = new HashSet<price>();
            this.cities = new HashSet<city>();
        }
        public int deal_ID { get; set; }
        public string name { get; set; }
        public string description { get; set; }
        public string terms { get; set; }
        public string phone { get; set; }
        public string work_time { get; set; }
        public string address { get; set; }
        public string map { get; set; }
        public string home_page { get; set; }
        public bool bonus_deal { get; set; }
        public System.DateTime start_date { get; set; }
        public System.DateTime end_date { get; set; }
        public int coupon_quantity { get; set; }
        public Nullable<int> coupon_sell { get; set; }
        public Nullable<int> like_deal { get; set; }
        public Nullable<int> dislike_deal { get; set; }
        public string fetures { get; set; }
        public int category_ID { get; set; }
        public int status_ID { get; set; }
    
        public virtual ICollection<comment> comments { get; set; }
        public virtual ICollection<coupon> coupons { get; set; }
        public virtual deal_category deal_category { get; set; }
        public virtual ICollection<deal_image> deal_image { get; set; }
        public virtual ICollection<price> prices { get; set; }
        public virtual deal_status deal_status { get; set; }
        public virtual ICollection<city> cities { get; set; }
    }


модель цен
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
public partial class price
    {
        public int price_ID { get; set; }
        public int full_price { get; set; }
        public int discount { get; set; }
        public int price1 { get; set; }
        public string description { get; set; }
        public Nullable<int> sell { get; set; }
        public int deal_ID { get; set; }
    
        public virtual deal deal { get; set; }
    }


модель города
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public partial class city
    {
        public city()
        {
            this.users = new HashSet<user>();
            this.deals = new HashSet<deal>();
        }
    
        public int city_ID { get; set; }
        public string name { get; set; }
    
        public virtual ICollection<user> users { get; set; }
        public virtual ICollection<deal> deals { get; set; }
    }


модель категорий
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
public partial class deal_category
    {
        public deal_category()
        {
            this.deals = new HashSet<deal>();
        }
    
        public int category_ID { get; set; }
        public string name { get; set; }
    
        public virtual ICollection<deal> deals { get; set; }
    }


Помогите составить вопрос и корректно передать в представление объект.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2013, 18:14
Ответы с готовыми решениями:

Выборка из нескольких таблиц
Необходимо на представление вывести значения одновременно с двух таблиц Есть класс Dissertation: public class Dissertation { ...

Выборка данных из нескольких таблиц. Аналитическая выборка данных
16 Для каждого отдела выбрать отношение зарплаты и комиссионных сотрудников отдела к объему продаж отдела. 17 *Выбрать список штатов в...

Выборка данных из нескольких таблиц
Помогите пожалуйста составить запрос, чтобы выбрать следующие данные, по данному ключу: - для заданного района города: вид...

5
 Аватар для Сергей 83
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
11.03.2013, 12:36
а че так все не просто? кто писал эти модели и зачем? это весь код ты писал? какова задача вообще?
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
11.03.2013, 13:00  [ТС]
С выводом я разобрался, сам по не внимательности ошибся. Если я хочу добавить новое событие(запись в таблицу), то EF сам распределит данные по связанным таблицам (город, категория, цены, etc) или для этого условия надо? И еще, таблицы deal и city имеют отношение М:М и связаны через табличку deal_city(deal_FK, city_FK), как реализовать добавление записей в эту табличку когда указывается несколько городов? Спасибо за ответ заранее.
0
28 / 28 / 2
Регистрация: 24.01.2013
Сообщений: 183
11.03.2013, 23:12
Цитата Сообщение от N!K Посмотреть сообщение
о EF сам распределит данные по связанным таблицам
- на сколько мне известно сам по себе EF за вас ничего не делает, а связывание как я понимаю это просто конструирование для того чтобы вы сами не запутались и для поиска ошибок. в msdn о связывании написано - почитайте.
0
16 / 16 / 3
Регистрация: 16.08.2011
Сообщений: 62
15.03.2013, 10:56
Судя по всему у вас часть данных не подгружается в POCO обьект созданный EF.

Это может быть потому что часть "свойств-связей" не помечены как virtual и EF не может динамически создать прокси и внедрить код в set свойства, либо потому что в Context.ContextOptions.CreateProxyEnable d установлено в false.

Для того чтобы испривить можете воспользоваться тем что я написал выше, или использовать так называемый eager loading вместо lazy loading который скорее всего используется у вас.

пример eager loading:

C#
1
Context.MySet.Include("ProperyInsideSet");
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
15.03.2013, 11:28  [ТС]
Спасибо, все заработало). Чтобы не создавать новую тему спрошу здесь. Имеется модель которая содержит несколько свойств, часть из них вводит пользователь при создании/редактировании объекта, а остальные свойства заполняются в контроллере. Для добавления и редактирования есть соответствующие методы (Add, Edit). Как с помощью AJAX можно организовать обращение к этим методам со страницы? При нажатии на кнопку добавить/редактировать появляется всплывающее окно с формой ввода. Собственно какой возвращаемый тип должен иметь метод контроллера и что возвращать на страницу? Желательно чтобы после добавления объекта, он сразу появлялся на в списке на странице пользователя без ее перезагрузки. Если не сложно, то можно с примером)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2013, 11:28
Помогаю со студенческими работами здесь

Выборка данных из нескольких таблиц.
Делаю курсовую работу на C#, столкнулся с необходимостью организовать поиск по нескольким таблицам базы данных, с которой работаю. ...

Выборка данных из нескольких таблиц
Добрый день, пишу запрос на выборку из нескольких таблиц, в ходе понял, что одни и теже данные выдаются по нескольку раз, можете помочь в...

Выборка данных из нескольких таблиц
Есть две таблицы. Одна хранит в себе список объектов(поля: object_id,object_name). Вторая - список статусов данных...

Выборка данных из нескольких таблиц
Здравствуйте, проблема такая. Нужно проверить правильность запроса, кому несложно) 1. Вывести фамилию, должность, название отдела и...

Выборка данных из нескольких таблиц по условиям
Дамы и господа! Есть несколько таблиц, пускай 2. В этих таблицах в разных столбцах находятся даты. ключ - столбец num Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru