这是不言自明的。我有一个包含另一个的类让我们称它们为主题和教室
public class Subject
{
public Classroom Class {get; set;}
}
我正在使用无状态外观,这意味着我的 DbContext 在恢复对象后立即被处理,并被创建用于存储新对象。它不应该知道 Classroom 不是一个新对象,因为它的 ID 已经在数据库中了吗?使用调试器,我可以在调用 SaveChanges 方法之前跟踪到该点,而 Classroom.id 是我在数据库中拥有的那个。有什么问题?EF 添加了一个新的 Classroom,其属性与之前的完全相同,但有一个新的 PK。我在这里做错了什么?
这是用于一般 CRUD 操作的代码(它们在我的 DbContext 中)更新和删除都可以正常工作:
public void Update(DbSet MySet, object Obj)
{
MySet.Attach(Obj);
var Entry = this.Entry(Obj);
Entry.State = EntityState.Modified;
this.SaveChanges();
}
public void Insert(DbSet MySet, object Obj)
{
MySet.Add(Obj);
this.SaveChanges();
}
public void Delete(DbSet MySet, object Obj)
{
MySet.Attach(Obj);
var Entry = this.Entry(Obj);
Entry.State = EntityState.Deleted;
this.SaveChanges();
}