【发布时间】:2011-02-11 18:23:23
【问题描述】:
我有一个 ASP.NET 4 Web 应用程序,它使用实体框架来保存用于导航等功能的项目的分层结构。
应用程序的一个功能允许将层次结构树的特定分支导出到 XML,使用 DataContractSerializer 生成。导出后,其目的是可以将 XML 上传到同一应用程序的另一个实例,反序列化回 EF 对象,然后添加到第二个服务器上的数据模型中。
当我尝试以这种方式导入数据时,我发现我看到以下错误:
无法添加或附加该对象,因为其 EntityReference 的 EntityKey 属性值与该对象的 EntityKey 不匹配。
仔细查看序列化程序生成的 XML,我可以看到实体键位于已序列化的项目中。由于我正在导入源自不同数据库的实体,因此某些 ID 会发生冲突。
我希望能够做的(除非我在这里遗漏了什么)是将导入的实体附加到对象上下文并重置正在导入的对象的 ID。
有没有聪明的方法来做到这一点?我是否只需将每个导入实体的 ID 设置为 0,将它们附加到对象上下文,然后保存更改?
提前致谢!
【问题讨论】:
标签: .net asp.net entity-framework-4 datacontractserializer