<分区>
Possible Duplicate:
What are the benefits of Persistence Ignorance?
在尝试找出 Entity Framework 一段时间并提出一些问题后,我得出的结论是我只是不明白持久性无知对象的意义所在。
据我所知,使用持久性感知对象和持久性无知对象之间的实际区别在于,一个人会使用类似
Person p = Person.Load(id);
p.Active = false;
p.Save();
另一个是按照
using (var context = new MyContext())
{
Person p = context.Persons.Single(x => x.ID == id);
p.Active = false;
context.SaveChanges();
}
在第一种情况下,我可以返回 p
,并在稍后调用 Save()
。在后者中,我可以返回 p
,但我需要将它放入新的 MyContext()
中以保存它。在第一种情况下,假设 Person 从一些实际处理数据库逻辑的基础对象继承 Load() 和 Save() ,如果我想改变持久性,它只涉及改变那个基础对象(或者甚至只是有一个 IPersistent
多个基类可以实现访问多个商店的接口(interface))。在后者中,如果持久层发生变化,我将需要更改 MyContext
的每个实例,而且零碎地进行会非常复杂。
我的印象是,执着-无知是件好事。我只是不明白为什么。似乎设置、使用、更改批发和零碎更改要复杂得多,这种复杂性没有任何优势。我只是遗漏了一些重要的东西,还是我对持久性感知/无知意味着有缺陷的全部理解?