我正在使用EF 6.0和代碼優先的方法。 我有通過實體框架在數據庫中創建和更新數據的問題。我不確定在儲存學生之前是否需要製作db.Groups.Attach(student.Group)
。沒有這個保存後學生,我也有新的組,但有其他GroupId相同的名稱。實體框架:創建和更新WPF中的相關對象
而且因爲我得到例外,我不能更新學生:The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.
public class Student {
[Key]
public int StudentId {get; set;}
public string Name {get; set;}
public Group Group {get; set;}
}
public class Group {
[Key]
public int GroupId{ get; set;}
public string Name {get; set;}
public virtual ICollection<Student> Students {get; set;}
}
。
public class StudentDao {
public void createStudent(Student student) {
using (var db = new StorageContext()) {
// without this also creates new Group.
db.Groups.Attach(student.Group);
db.Students.Add(student);
db.SaveChanges();
}
}
public void updateStudent(Student student) {
using (var db = new StorageContext()) {
var original = db.Students.Find(student.StudentId);
if (original != null) {
original.Name = student.Name;
original.Group = student.Group;
db.SaveChanges(); //exception
}
}
}
}
感謝您的回覆。 「在服務類方法中使用DbContext及其DbSets」是什麼意思?你的意思是在一個類中有一個dbcontext嗎?你能詳細說明一篇文章嗎? – Amir