Мастер / Деталь с Entity Framework - PullRequest
       18

Мастер / Деталь с Entity Framework

0 голосов
/ 03 декабря 2009

У меня есть таблица, скажем, СТУДЕНТЫ, которая связана один-ко-многим с другой таблицей, КЛАССАМИ. Я создал форму ASP.Net для ввода нового ученика, включая выбор одного из классов из поля со списком. Это небольшое, но многоуровневое приложение, и я начал использовать каркас сущностей. Таким образом, EF генерирует классы для обеих этих таблиц. При отправке я создаю объект STUDENT и передаю его моему контроллеру данных для вставок, обновлений и т. Д.

В таблице STUDENTS у меня есть CLASSID, это FK для таблицы CLASSES. В тот день, когда я делал вставку для СТУДЕНТОВ, я брал SelectedValue из поля со списком и вставлял его в поле ClassId. Однако в EF объект STUDENT не имеет этого поля идентификатора. Вместо этого у него есть поле CLASS, которое является полным экземпляром этого класса. Когда новый объект STUDENT построен, это поле CLASS равно нулю. Я хочу заполнить его классом, выбранным пользователем в комбо.

Я не могу оставить его пустым, и я не могу просто вставить туда удостоверение личности. Я попытался получить эту запись класса и использовать ее, но получаю ошибку, что не могу использовать один и тот же объект в двух разных контекстах. Что я действительно должен здесь делать?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2009

Как насчет того, чтобы начать делать вещи простым способом?

using (var fe = new FormsEntities())
{
    newStudent.BClass = fe.BClasses.Where(bc => bc.BClassId == 13).First();
    fe.AddToStudents(newStudent);
    fe.SaveChanges();
}

Не копайтесь с EntityKey s, пока не начнете работать с основами. Я думаю, что «оптимизация» экономии в значительной степени является пустой тратой времени.

2 голосов
/ 03 декабря 2009

Вы можете установить свойство EntityKey ClassReference:

Student.ClassReference.EntityKey = new EntityKey("myModel.ClassSet", "ID", classId);

EDIT

Вот как добавить студента (сейчас я не могу это проверить, но оно должно работать):

newStudent.BClassReference.EntityKey = new EntityKey("FormsEntities.BClasses", "BClassId", 13);

FormsEntities fe = new FormsEntities();
fe.AddToStudents(newStudent);
fe.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...