gpt4 book ai didi

c# - 实体对象的 XML 序列化

转载 作者:行者123 更新时间:2023-11-30 18:06:16 25 4
gpt4 key购买 nike

我正在尝试将 EF 4.0 对象图序列化为 XML 以通过 WCF 服务传递。过去,我用 DTO/POCO(通常用于 JSON 序列化)来完成此操作。在这种情况下,因为我只进行 XML 序列化,所以我似乎应该能够直接序列化实体对象,但是,我遇到了这个难题:

  1. 如果我不分离实体,序列化会抛出一个错误,指出对象上下文已被释放(因为它已释放,所以这是预期的)。

  2. 如果我分离实体,导航属性中加载的任何相关对象都会被删除。

我的期望是,如果我枚举任何链接的实体,然后从上下文中分离对象,我仍然可以使用该关系进行序列化。

所以我的问题是,是否可以直接序列化实体对象并保留任何已加载的导航属性/集合?

谢谢...

最佳答案

序列化对象时,序列化程序将遍历整个对象图。

  • 如果附加了您的对象,它将强制加载每个延迟加载导航。因此,如果您的上下文被处置,您将得到一个异常。
  • 根据 msdn ,当导航属性中的项目分离时,它不再出现在导航属性中。我认为分离对象和访问它的导航属性时是一样的。

我认为您应该在序列化之前从您的实体对象创建 DTO/POCO。但是,您应该看看 automapper这将帮助您将对象从实体转换为 DTO 并返回。

关于c# - 实体对象的 XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009514/

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