繁体   English   中英

EF6应用程序未序列化集合

[英]EF6 Application Not Serializing Collection

我正在通过第一个实体框架/ MVC应用程序进行工作,并且在应用程序的API方面遇到了问题。 这是代码

[DataContract(IsReference=true)]
[KnownType(typeof(Project.Models.StepByStep))]
public class StepByStep
{
    [DataMember]
    public int Id { get; set; }
    [Required]
    [DataMember]
    public string Name { get; set; }
    [Required]
    [DataMember]
    public int Version { get; set; }
    [DataMember]
    public virtual ICollection<Step> Steps { get; set; }
    [DataMember]
    public virtual ICollection<StepPath> PathTable { get; set; }
}

和一个子类

[DataContract(IsReference = true)]
[KnownType(typeof(Project.Models.Step))]
public class Step
{
    [DataMember]
    public int Id { get; set; }

    //omitted numerous extraneous properties

    [DataMember]
    public int StepByStepId { get; set; }

    [DataMember]
    public virtual StepByStep StepApp { get; set; }

}

使用MVC的脚手架控制器,我创建了一个StepByStep,并创建了附加到StepByStep的3个步骤。 这准确地反映在MVC控制器中。

当使用API​​并调用StepByStep实体时,我希望从这些步骤中看到大量信息,但是什么也看不到,它们为空。

<StepByStep xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/Models" z:Id="i1">
<Id>1</Id>
 <Name>TestApp</Name>
 <PathTable i:nil="true"/>
 <Steps i:nil="true"/>
 <Version>1</Version>
</StepByStep>

谁能告诉我为什么我项目的API部分无法访问/序列化父实体中的步骤和路径集合?

确保在检索父项时在API调用中包括子项。 在某些情况下,使用EF时不会自动包含子对象。 请参阅此链接的“快速加载”部分。

注意:在上面的文章中已经提到了它,但是我会在这里提到它:还有一个选项可以使用延迟加载(总是包含所有内容),但是对于序列化来说这可能是一个非常糟糕的主意,因为您最终可能会拖拉向后移动比您想要的更多的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM