C# 在c中用XML序列化实体集合#
我试图序列化一个包含entitycollection的对象。我可以使用C# 在c中用XML序列化实体集合#,c#,xml,entity-framework,serialization,C#,Xml,Entity Framework,Serialization,我试图序列化一个包含entitycollection的对象。我可以使用 public string Serialize<T>(T item) { XmlSerializer mySerializer = new XmlSerializer(typeof(T)); StringWriter sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(
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();
}
需要序列化的对象是wfi。如果您有任何帮助,请让我们更清楚地了解此EntityCollection是一个导航属性,我们将不胜感激
我们可以一起序列化object+navigation属性吗?或者我需要定义一个组成object和navigation属性(实体集合)的新类。也许您可以关闭实体模型的延迟加载。这样它将强制加载所有字段 为此,您可以尝试转到EDMX属性并推迟延迟加载 您可以尝试的另一个方法是“包括”,如下所示:
myEntity.MyTable.include("FieldsInfo");
仅在此之后,将该项传递给Serialize方法。如果您有循环引用,这可能会有问题…一个简单的解决方案,效果很好。 在实体的分部类中,我添加了一个返回EntityCollection列表的属性,如下所示:
public List<XXX> XXXList // XXX stands for the EntityCollection
{
get { return XXX.ToList; }
}
public List XXXList//XXX代表EntityCollection
{
获取{return XXX.ToList;}
}
序列化程序使用所有关系正确地获取对象。我已经在使用这种方法了。但它并没有按照我想要的方式或u建议的方式工作,所以我用另一种方式解决了问题,我定义了一个类,然后将实体集合分配给类属性,然后序列化了类对象。它起作用了,但这种方法的缺点是我需要定义一个新的类dat,我不想让nyhow感谢你的评论(K:)无论如何,拥有POCO而不是EF生成的实体总是一个好的做法。;)
public List<XXX> XXXList // XXX stands for the EntityCollection
{
get { return XXX.ToList; }
}