具有多层数据结构的 DataContractSerializer
DataContractSerializer with Multi-tiered data structures
我正在尝试实现一个 DataContractSerializer
来生成一个 XML 文件来表示我们有点复杂的对象模型。根对象有多个 ICollection
属性,其中一个属性有多个 ICollection
属性,多个属性有多个 ICollection
属性……你懂的。
我用 [DataContract(Name = "foo")]
标签装饰了我所有相关的 类,阅读了 this 关于使用 Include()
的问题,并开始构思它。当我把顶层放在一起时,我想知道第二层是否也需要显式声明。这是我目前所拥有的:
public void Serialize(string DataCode)
{
Product prod = context.Products
.Include(p => p.Products)
.Include(p => p.References)
.Include(p => p.Dates)
.Include(p => p.Weights)
.Include(p => p.Notes)
.Include(p => p.Rules) // Rules have PriceConditions, which have Prices...
.Include(p => p.DataBooks)
.First(m => m.ProductCode == DataCode);
FileStream fs = new FileStream(path,FileMode.Create);
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
DataContractSerializer serializer = new DataContractSerializer(typeof(Product));
serializer.WriteObject(writer, prod);
}
那么,我是否需要对 Rules 做些什么以确保整个结构都被写入,或者 Include()
是否知道深入挖掘结构并加载每个元素?
您还需要明确包括较低级别。
Product prod = context.Products
.Include(p => p.Rules.Select(r => r.PriceConditions.Select(p => p.Prices)));
- Serialize Entity Framework object with children to XML file
- MSDN page on Include() with examples
我正在尝试实现一个 DataContractSerializer
来生成一个 XML 文件来表示我们有点复杂的对象模型。根对象有多个 ICollection
属性,其中一个属性有多个 ICollection
属性,多个属性有多个 ICollection
属性……你懂的。
我用 [DataContract(Name = "foo")]
标签装饰了我所有相关的 类,阅读了 this 关于使用 Include()
的问题,并开始构思它。当我把顶层放在一起时,我想知道第二层是否也需要显式声明。这是我目前所拥有的:
public void Serialize(string DataCode)
{
Product prod = context.Products
.Include(p => p.Products)
.Include(p => p.References)
.Include(p => p.Dates)
.Include(p => p.Weights)
.Include(p => p.Notes)
.Include(p => p.Rules) // Rules have PriceConditions, which have Prices...
.Include(p => p.DataBooks)
.First(m => m.ProductCode == DataCode);
FileStream fs = new FileStream(path,FileMode.Create);
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
DataContractSerializer serializer = new DataContractSerializer(typeof(Product));
serializer.WriteObject(writer, prod);
}
那么,我是否需要对 Rules 做些什么以确保整个结构都被写入,或者 Include()
是否知道深入挖掘结构并加载每个元素?
您还需要明确包括较低级别。
Product prod = context.Products
.Include(p => p.Rules.Select(r => r.PriceConditions.Select(p => p.Prices)));
- Serialize Entity Framework object with children to XML file
- MSDN page on Include() with examples