在 n 层场景中,数据层应该如何更新 EF 4.3 中对象的 List 属性?
假设我们有这个类:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public List<Bar> Bars { get; set; }
}
就保存/更新 ID 和名称而言,这很有效,但 Bars 属性被忽略。
protected void SaveChanges(Foo foo)
{
this.Database.Entry<Foo>(foo).State = GetState(foo);
this.Database.SaveChanges();
}
由于原始上下文(检索到的 Foo)不再在内存中,数据层应该如何处理保存对 Bars 属性的更新?EF 如何知道哪些 Bar 项目已被删除、哪些已更新、哪些已添加?
注意:我可以遍历每个 Bar 项目并将其与原始项目进行比较,但我猜 EF 不应该以这种方式工作。这似乎乏味且不正确。