代码之家  ›  专栏  ›  技术社区  ›  Gavin

实体框架4 POCO上下文持久性访问服务

  •  1
  • Gavin  · 技术社区  · 15 年前

    我有一个WCF服务,它使用实体框架从数据库检索记录并将它们映射到POCO对象。这些POCO对象随后返回到客户机应用程序。

    假设客户机应用程序更改了其中一个POCO对象的某些属性,然后将其发送回WCF服务进行保存。据我所知,这个POCO对象与实体框架上下文完全断开。我现在保存这个的方法是创建一个新的上下文对象,然后再次从数据库中检索POCO对象,然后将传入方法的POCO对象的属性值复制到POCO对象,只从数据库中检索,然后在上下文中调用save。这是最好的方法还是有更简单的方法?

    1 回复  |  直到 15 年前
        1
  •  1
  •   scripni    15 年前

    这里的问题是,EF通过为每个检索到的对象使用自己的“唯一标识符”(与数据库中记录的主键不同)来跟踪附加的对象。当然,该属性没有用DataMember属性标记,因此当通过WCF服务发送时,您会丢失EF用来跟踪它的密钥。当反序列化对象时,它不再是相同的对象,而是另一个更简单的对象,只包含用DataMember属性标记的属性。因此,当服务再次接收它们时,您当然会丢失对象和EF之间的连接。

    你试过将对象重新附加到上下文吗?我想应该有用,但我自己还没试过。