Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение в связанную таблицу 
:(
    Опции темы
andrew8712
Дата 4.4.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.4.2009

Репутация: нет
Всего: нет



Есть форма с dataGridView. В dataGridView загружаются данные из 3 таблиц: user posted image .  Выглядит этот грид вот так:  user posted image

Теперь я собираюсь внести изменения одной строки в базу данных. Данные берутся из специальных полей редактирования (3 текстбокса, 2 комбобокса), но это не суть важно. Изменения пытаюсь внести следующим кодом:
Код

                string strLastName = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                string strFirstName = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
                string strMiddleName = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
                string strFac = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
                string strGroup = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
                var query = from s in students.Students
                            where (s.C_Lastname == strLastName)
                            && (s.C_Name == strFirstName)
                            && (s.C_Middlename == strMiddleName)
                            && (s.Groups.Faculties.С_Name == strFac)
                            && (s.Groups.C_Code == strGroup)
                            select s;
                foreach (var s in query)
                { 
                    s.C_Lastname  = textBox2.Text;
                    s.C_Name = textBox3.Text;
                    s.C_Middlename = textBox4.Text;
                    s.Groups.C_Code = "22-06";                               // ОШИБКА ТУТ
                    s.Groups.Faculties.С_Name = "Исторический"; // ОШИБКА ТУТ
                   
                }
                students.SaveChanges();

На строчке s.Groups.C_Code = "22-06" выскакивает ошибка: "В экземпляре объекта не задана ссылка на объект."
PM MAIL   Вверх
Idsa
Дата 4.4.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 5
Всего: 62



andrew8712, и хорошо, что ругается. Представьте, что бы было, если бы он грузил все-все-все связанные объекты! Нужно явно указать prefetching (eager loading).
Я так понял, мы о Linq To Sql говорим? Там это делается при помощи DataLoadOptions: http://www.davidhayden.com/blog/dave/archi...erformance.aspx


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
andrew8172
Дата 5.4.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.6.2006

Репутация: нет
Всего: нет



LINQ To Entities.
По сути, мне не нужно поле связанной таблицы. Мне надо в таблице Students изменить значение поля N_Group, которое, в свою очередь, связано с полем GroupID
PM MAIL WWW   Вверх
Idsa
Дата 5.4.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 5
Всего: 62



andrew8172, в следующий раз указывайте сразу.
В Linq to Entities для этого нужно воспользоваться методом Include:
Код

from c in students.Students.Include("Groups")
...



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
andrew8712
Дата 5.4.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.4.2009

Репутация: нет
Всего: нет



Делаю s.Groups.C_Code = "11-07" - меняется значение поля C_Code в Groups. Как заменить значение поля N_Group в Students на значение поля GroupID в Groups, где C_Code в Groups = "11-07"?
PM MAIL   Вверх
Idsa
Дата 5.4.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 5
Всего: 62



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


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.