如何获得完整的对象与代码优先实体框架4.1

本文关键字:实体 框架 代码 何获得 对象 | 更新日期: 2023-09-27 17:49:01

我试图返回JSON完全深的对象(与所有的外键关系填写),但我得到所有引用的对象为空。

下面是获取对象的调用:

    public ActionResult GetAll()
    {
        return Json(ppEFContext.Orders, JsonRequestBehavior.AllowGet);
    }

这里是Order对象本身:

public class Order
{
    public int Id { get; set; }
    public Patient Patient { get; set; }
    public CertificationPeriod CertificationPeriod { get; set; }
    public Agency Agency { get; set; }
    public Diagnosis PrimaryDiagnosis { get; set; }
    public OrderApprovalStatus ApprovalStatus { get; set; }
    public User Approver { get; set; }
    public User Submitter { get; set; }
    public DateTime ApprovalDate { get; set; }
    public DateTime SubmittedDate { get; set; }
    public Boolean IsDeprecated { get; set; }
}

我还没有找到一个很好的资源使用EF 4.1注释。如果你能建议一个好的,有答案的,你可以给我链接,这对我来说就足够了!

问候,圭多

我添加了虚拟关键字按萨克斯曼和我现在处理循环引用误差问题。

如何获得完整的对象与代码优先实体框架4.1

在相关实体前添加virtual关键字:

public class Order
{
    public int Id { get; set; }
    public virtual Patient Patient { get; set; }
    public virtual CertificationPeriod CertificationPeriod { get; set; }
    public virtual Agency Agency { get; set; }
    public virtual Diagnosis PrimaryDiagnosis { get; set; }
    public virtual OrderApprovalStatus ApprovalStatus { get; set; }
    public virtual User Approver { get; set; }
    public virtual User Submitter { get; set; }
    public DateTime ApprovalDate { get; set; }
    public DateTime SubmittedDate { get; set; }
    public Boolean IsDeprecated { get; set; }
}

如果您的对象相互引用,您可能会以A circular reference was detected while serializing an object...错误结束。在这种情况下,您将需要创建一个ViewModel或类似的东西来克服这个问题。或者使用LINQ投影匿名对象

阅读加载相关对象