Entity Framework: добавление существующего дочернего POCO в новый родительский POCO, создание нового дочернего в БД
Я хочу использовать Entity Framework POCO в автономном (из контекста) режиме. В моем сценарии яm создает новый родительский объект и хочет присоединить к нему существующий дочерний объект, а затем сохранить его в БД.
Приведенный ниже код нежелательно вставляет новую запись курса при сохранении новой записи студента, когда вместо этого я хочу, чтобы существующая запись курса была связана с новой записью студента.
Как я могу сделать это в Entity Framework, где ...
объекты могут быть отключены от контекста. (т.е. запрашивается в одном контексте, а затем сохраняется в другом контексте)Мне не нужно повторно запрашивать дочернюю запись из БД, чтобы я мог прикрепить ее к родителю, когдам сохранение в дб. Я действительно хочу избегать дополнительных поездок в БД, когда у меня уже есть объект в памяти.На этой странице показана схема базы данных, на которой основан код нижеhttp://entityframeworktutorial.net/EF4_EnvSetup.aspx#.UPMZ4m-UN9Y
class Program
{
static void Main(string[] args)
{
//get existing course from db as disconnected object
var course = Program.getCourse();
//create new student
var stud = new Student();
stud.StudentName = "bob";
//assign existing course to the student
stud.Courses.Add(course);
//save student to db
using (SchoolDBEntities ctx = new SchoolDBEntities())
{
ctx.Students.AddObject(stud);
ctx.SaveChanges();
}
}
static Course getCourse()
{
Course returnCourse = null;
using (var ctx = new SchoolDBEntities())
{
ctx.ContextOptions.LazyLoadingEnabled = false;
returnCourse = (from s in ctx.Courses
select s).SingleOrDefault();
}
return returnCourse;
}
}