Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用代码优先实体框架4.1获取完整对象_C#_Code First_Ef Code First_Entity Framework 4.1 - Fatal编程技术网

C# 如何使用代码优先实体框架4.1获取完整对象

C# 如何使用代码优先实体框架4.1获取完整对象,c#,code-first,ef-code-first,entity-framework-4.1,C#,Code First,Ef Code First,Entity Framework 4.1,我试图以JSON的形式返回完全深度的对象(填充了所有外键关系),但我得到的是所有引用对象的空值 以下是获取对象的调用: public ActionResult GetAll() { return Json(ppEFContext.Orders, JsonRequestBehavior.AllowGet); } 这是Order对象本身: public class Order { public int Id { get; set; } pu

我试图以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; }
}
我还没有找到使用EF4.1注释的好资源。如果你能推荐一个好的,有答案的,你可以给我链接,这对我来说已经足够了

问候,

圭多

更新

我根据Saxman添加了virtual关键字,现在 处理循环引用 错误问题


阅读相关内容

在相关实体之前添加
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; }
}

如果对象之间存在引用,则序列化对象时可能会出现循环引用。错误。在这种情况下,您需要创建一个
ViewModel
或类似的东西来解决这个问题。或者使用LINQ投影一个匿名对象。

看看这里:OrderApprovalStatus等是什么类型的可枚举对象。这已经取得了进展,但现在我是您描述的地方。循环引用除外。我正在阅读有关将外部对象的id添加到模型和其他解决方案中的内容。目前您无法对此做太多工作,使用引用另一个对象的对象序列化是不可能的。正如我所建议的,您可以创建一个只包含所需数据的ViewModel,或者将其投影到一个匿名对象,即:我的第一个想法是查看延迟加载。是的,但是如果您总是需要加载每个引用的属性,在每次加载时显式编写Include并不舒服,也许有另一种方法可以配置延迟加载