我正在尝试实现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);
}
那么,我是否需要对规则做一些事情以确保整个结构被编写,或Include()
知道隧道深入到结构中并加载每个元素?
答案 0 :(得分:1)
您还需要明确包含较低级别。
Product prod = context.Products
.Include(p => p.Rules.Select(r => r.PriceConditions.Select(p => p.Prices)));