par*_*agy 5 poco entity-framework-4 self-tracking-entities
有人能指出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);
Run Code Online (Sandbox Code Playgroud)
自我跟踪实体不是POCO.相反,他们非常注重持久性.EntityObject甚至比实体还要多.使它们与众不同的是,即使它们没有附加到变化,也可以跟踪变化ObjectContext.
正如你所说,"纯粹的"POCO使变更跟踪变得困难.实际上,你唯一能做的就是比较对象的快照.对象上下文有一个DetectChanges方法.
使用伪POCO代理,您真正拥有的是一种在编译时看起来(几乎)像POCO并且在运行时看起来像非POCO的类型.我说"差不多",因为在运行时你会得到一个实例,它是编译时类型的子类型.因此,您要跟踪更改的任何属性都必须是非私有和虚拟的.类似的限制适用于延迟加载.您可以在ADO.NET团队博客上的这一系列文章中阅读更多相关信息.
| 归档时间: |
|
| 查看次数: |
3763 次 |
| 最近记录: |