C# 实体对象的XML序列化
我正在尝试将EF4.0对象图序列化为XML并通过WCF服务传递。在过去,我使用DTO/POCO(通常用于JSON序列化)实现了这一点。在本例中,由于我只进行XML序列化,因此似乎应该能够直接序列化实体对象。然而,我遇到了以下难题:C# 实体对象的XML序列化,c#,wcf,entity-framework-4,xml-serialization,C#,Wcf,Entity Framework 4,Xml Serialization,我正在尝试将EF4.0对象图序列化为XML并通过WCF服务传递。在过去,我使用DTO/POCO(通常用于JSON序列化)实现了这一点。在本例中,由于我只进行XML序列化,因此似乎应该能够直接序列化实体对象。然而,我遇到了以下难题: 如果我不分离实体,序列化将抛出一个错误,即对象上下文已被释放(因为它在该点上已释放,所以这是预期的) 如果拆离实体,则会删除导航属性中加载的所有相关对象 我的期望是,如果我枚举了任何链接的实体,然后将对象从上下文中分离,那么我仍然可以将该关系用于序列化 所以我的问题是
谢谢 序列化对象时,序列化程序将遍历整个对象图
- 如果对象被附加,它将强制加载每个延迟加载导航。因此,如果您的上下文被释放,您将得到一个异常
- 根据,当导航属性中的项目被分离时,它不再显示在导航属性中。我认为分离对象并访问其导航属性时也是如此
我认为应该在序列化之前从实体对象生成DTO/POCO。不过,您应该看看哪些选项有助于将对象从实体转换为DTO再转换回实体。是否确实加载了导航属性?第一个问题看起来像是EF触发器延迟加载获取它们。在分离对象之前,我已经显式访问了所需的导航属性。我的期望是,如果这些值被读取(因此从数据库中加载),那么它们在对象分离后仍然可用。