实体框架4 POCO跨服务的上下文持久性

时间:2010-07-23 11:51:29

标签: c# entity-framework

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

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

1 个答案:

答案 0 :(得分:1)

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

您是否尝试将对象重新附加到上下文?我认为它应该有效,但我自己没有尝试过。