【问题标题】:Connected and disconnected POCOs in EFEF 中连接和断开的 POCO
【发布时间】:2013-12-25 07:43:50
【问题描述】:
  1. EF Code first 中的连接和断开“POCO”是什么意思?
  2. 您能解释一下如何在不同的场景中使用它们吗?

【问题讨论】:

    标签: entity-framework ef-code-first poco


    【解决方案1】:

    当您使用实体框架 DbContext 将对象从数据库读取到应用程序时,上下文将跟踪这些对象。这意味着当您在上下文中调用 SaveChanges 时,您对这些对象所做的任何更改都将持久保存到数据库中。 这可以称为连接对象。

    另一方面,您可能希望将这些对象传递给另一个进程。例如。您可能有一个服务器从数据库中读取数据,然后将这些对象传递给客户端。客户端将接收到与数据库没有连接的纯 poco 对象。服务器不会自动检测到客户端可能对对象所做的任何更改。这可以称为断开连接的对象。 IE。它们不受上下文跟踪。

    客户端可以将可能已被客户端更改或未更改的对象传递回服务器。然后,服务器可以选择将对象附加到上下文,并在此过程中将断开连接的对象转换为连接的对象。在这种情况下,服务器通常会有一些功能来检测对象的删除、添加和更改,但这取决于服务器代码的开发人员根据应用程序的要求来决定它应该如何工作。

    【讨论】:

    • 如果我在从 DB 读取期间保持我的 DbContext 处于活动状态,在客户端处理生成的 POCO 并使用相同的 DbContext 将 POCO 的更改保存回 DB,我正在使用连接。我说的对吗?
    • 这取决于您读取的 POCO 和您处理的 POCO 是否是相同的对象实例。例如。当您序列化对象以将其发送到反序列化的不同进程时,它不再是相同的对象实例,也不再是连接的对象。
    • 那么,如果我想拥有一个多层应用程序,我必须使用断开连接的POCO,是吗?
    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多