的DataContractSerializer与多层次的数据结构(DataContractSeria

2019-10-22 20:28发布

我试图实现一个DataContractSerializer产生代表我们有点复杂的对象模型的XML文件。 根对象有多个ICollection特性,其中之一有多个ICollection性能,倍数,其中有多个ICollection属性...你的想法。

我饰我所有的相关的类用[DataContract(Name = "foo")]标签,读取该如何使用问题, 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()知道隧道深入到结构和加载每个元素?

Answer 1:

您将需要明确包括较低的水平以及。

Product prod = context.Products
    .Include(p => p.Rules.Select(r => r.PriceConditions.Select(p => p.Prices)));
  • 序列化实体框架对象与孩子们XML文件
  • MSDN页面上包括()的例子


文章来源: DataContractSerializer with Multi-tiered data structures