'da yeni bir çocuk oluşturur. Entity Framework POCO'yu bağlantısız (bağlam) modda kullanmak istiyorum. Benim senaryomda yeni bir Parent nesnesi oluşturuyorum ve varolan bir çocuk nesnesini ona eklemek ve daha sonra db'ye kaydetmek istiyorum.
Aşağıdaki kod, yeni bir Öğrenci kaydı kaydedilirken yeni bir Ders kaydı eklenmez, bunun yerine mevcut Ders kaydının yeni Öğrenci kaydına bağlı olmasını istiyorum.Entity Framework: varolan alt POCO'yu yeni Ana POCO'ya ekleyerek, DB
Ben nesneler bağlamdan kopuk olabilir ...
- Entity Framework bunu nasıl. (yani, bir bağlamda sorgulandı ve sonra farklı bir bağlamda kaydedildi)
- DB'den kaydettirdiğimde, alt kayıt defterine ekleyebilmem için, alt kayıtları DB'den yeniden sorgulamama gerek yok. Zaten belleğe bir nesne olarak sahip olduğumda db'ye ekstra yolculuk yapmaktan kaçınmak istiyorum.
Bu sayfa aşağıdaki kod bağlamları çapraz ilişkiler izin vermez 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;
}
}
İkinci seçenek neredeyse çalışıyor, ancak "Nesne eklenemiyor çünkü nesne bağlamında zaten var." "ctx.Students.AddObject (stud)" hatası hat. Hala "stud.Courses.Add (course)" yaparken bunu yapamayacağımı farz ediyorum. ondan önce . Yine de stud koleksiyonundaki Dersler koleksiyonundan yararlanmak istiyorum. – MakkyNZ
Eh, bunu test etmek için kullanışlı bir çözümüm yok, ancak önce bunu eklemeyi deneyin ve ardından öğrenciye ekleyin. Umarım bu şekilde EF tarafından "Eklendi" olarak işaretlenmeyecektir. –
bu gerçekten ideal değil. Ebeveyn-çocuk ilişkisinin öncelikle bir nesne düzeyinde gerçekleşmesini istiyorum, çünkü henüz db'ye kaydedilmeye hazır olmayabilir. Belki de, EF'in yarattığı varlıklar arasındaki tüm ilişkileri kendim kaldırmalı mıyım? – MakkyNZ