有人能指出POCO,自我跟踪实体,POCO代理之间的区别吗?
实际上,我正在使用Entity Framework 4.0和POCO(Repository Pattern),每当我在POCO中进行一些更改并调用ObjectContext.Savechanges时,它就会反映到DB。 我的问题是,
我正在使用的示例代码,
IEFRepository<Category> catRepository = new EFRepository<Category>();
Category c = catRepository.FindOne<Category>(x => x.Name == "Paper");
c.Name = "Paper";
catRepository.SaveChanges(System.Data.Objects.SaveOptions.None);
答案 0 :(得分:6)
自我跟踪实体不是POCO。相反,他们非常注重持久性。甚至超过EntityObject
个实体。使它们与众不同的是,即使它们未附加到ObjectContext
,也可以跟踪更改。
DetectChanges
方法。
使用伪POCO代理,你真正拥有的是一种在编译时看起来(几乎)像POCO并且在运行时看起来像非POCO的类型。我说“差不多”,因为在运行时你会得到一个实例,它是编译时类型的子类型。因此,您要跟踪更改的任何属性都必须是非私有和虚拟的。类似的限制适用于延迟加载。您可以在ADO.NET团队博客上的this series of articles中了解更多相关信息。