gpt4 book ai didi

entity-framework-4 - EF4 : Difference between POCO , self 跟踪实体,POCO 代理

转载 作者:行者123 更新时间:2023-12-04 18:52:41 28 4
gpt4 key购买 nike

有人可以指出 POCO、自我跟踪实体、POCO 代理之间的区别吗?

实际上,我正在使用 Entity Framework 4.0 和 POCO(存储库模式),每当我在 POCO 中进行一些更改并调用 ObjectContext.Savechanges 时,它就会反射(reflect)到数据库中。
我的问题是,

  • 由于未跟踪,上下文如何将更改持久保存到数据库?
  • 上下文是否为 POCO 动态生成跟踪信息?

  • 我正在使用的示例代码,
            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);

    最佳答案

    自我跟踪实体不是 POCO。相反,他们非常具有持久性意识。超过 EntityObject实体,甚至。它们的独特之处在于,即使它们没有附加到 ObjectContext,也可以跟踪更改。 .

    正如您所说,“纯” POCO 使更改跟踪变得困难。实际上,您唯一能做的就是比较对象的快照。对象上下文有一个 DetectChanges方法。

    使用伪 POCO 代理,您真正拥有的是一种在编译时看起来(几乎)像 POCO 而在运行时看起来像非 POCO 的类型。我说“几乎”是因为在运行时你会得到一个实例,它是编译时类型的子类型。因此,您要跟踪更改的任何属性都必须是非私有(private)的和虚拟的。类似的限制适用于延迟加载。您可以在 this series of articles 中了解更多信息。在 ADO.NET 团队博客上。

    关于entity-framework-4 - EF4 : Difference between POCO , self 跟踪实体,POCO 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966797/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com