0

我试图序列化一个包含实体集合的对象。我可以使用简单的序列化

     public string Serialize<T>(T item)
      {
          XmlSerializer mySerializer = new XmlSerializer(typeof(T));
        StringWriter sww = new StringWriter();
        XmlWriter writer = XmlWriter.Create(sww, new XmlWriterSettings() { OmitXmlDeclaration = true, Indent = true });
        try
        {
            mySerializer.Serialize(writer, item);
        }
        catch (Exception) { }
        finally
        {
            writer.Close();
            sww.Close();
        }
        return sww.ToString();
    }

我正在使用实体框架,我想要序列化的对象包含一个 EntityCollection,当我尝试序列化对象时它会序列化但错过了实体集合部分。当我尝试使用 VS 检查器查看对象时,它向我展示了 - 扩展结果视图将枚举 IEnumerable。这似乎我需要明确地将值添加到将被序列化的对象中,但它没有工作

Workflow wfi = wf; //assigning entity object to wfi so it can be serialized
foreach (var intials in wf.FieldsInfo) {   wfi.FieldsInfo.Add(intials);    } 

需要序列化的对象是 wfi。任何帮助都将不胜感激,以使其更加清楚这个 EntityCollection 是一个导航属性,我们可以一起序列化对象 + 导航属性,或者我需要定义一个组成对象和导航属性(实体集合)的新类。

4

2 回答 2

0

一个简单的解决方案,效果很好。在实体的 Partial 类中,我添加了一个返回 EntityColleciton 列表的属性,如下所示:

public List<XXX> XXXList // XXX stands for the EntityCollection
{
    get { return XXX.ToList; }
} 

序列化程序正确获取具有所有关系的对象。

于 2014-03-30T10:07:19.270 回答
0

也许您可以关闭实体模型的延迟加载。这样,它将强制加载所有字段。

为此,您可以尝试使用 EDMX 属性并关闭延迟加载。

您可以尝试的其他事情是“包含”,如下所示:

myEntity.MyTable.include("FieldsInfo");

只有在那之后将项目传递给 Serialize 方法。如果您有循环引用,这可能会出现问题......

于 2013-05-23T09:58:54.080 回答