在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和Name而言,这很有效,但会忽略Bars属性。
protected void SaveChanges(Foo foo)
{
this.Database.Entry<Foo>(foo).State = GetState(foo);
this.Database.SaveChanges();
}
由于原始上下文(检索到Foo)不再在内存中,数据层应如何处理保存Bars属性的更新? EF如何知道哪些Bar项已被删除,哪些已更新,哪些已添加?
注意:我可以遍历每个Bar项目并将其与原始项目进行比较,但我猜测EF不应该以这种方式工作。这看起来乏味且不正确。
答案 0 :(得分:2)
EF如何知道哪些Bar项目已被删除 已更新,哪些已添加?
如果你自己写下坚持,你应该怎么知道变化呢?我想你会选择以下两个选项之一:
在这两种情况下,您都会使用有关更改的信息来生成正确的SQL。
EF仅解决最后一点(SQL生成),但您仍然有责任告诉它已经发生了什么变化。