假设以下类:
public class Parent
{
public Int32 Id
{
get; set;
}
public String Name
{
get; set;
}
public virtual IList<Child> Children
{
get; set;
}
}
public class Child
{
public Int32 Id
{
get; set;
}
public String Name
{
get; set;
}
[Required]
public virtual Parent Owner
{
get; set;
}
}
尝试以这种方式删除某些子记录时遇到问题:
using (var db = new Context())
{
var DummyInstance = new Child { Id = 1 };
db.Set<Child>().Attach(DummyInstance);
db.Set<Child>().Remove(DummyInstance);
db.SaveChanges();
}
它会抛出 DbUpdateException ,如下所示:
'Context.Children'中的实体参与'Child_Owner'关系 找到0相关的'Child_Owner_Target' 预计会有1个“Child_Owner_Target”。
我的目的是避免查询将被删除的对象,而且我只能在我分配其父对象的虚拟实例时实现这一点:
var DummyInstance = new Child { Id = 1, Owner = new Parent { Id = 1 } };
但是,父ID并不总是已知(此外,它似乎不合适)。有没有办法让EF执行此操作以避免不必要的查询?