实体框架中的延迟加载

时间:2013-12-02 18:40:55

标签: entity-framework entity-framework-5

我在EntityFramework 5中遇到了延迟加载行为的问题。这是我的两个模型

public class Person {
 [Key]
 [Required]
 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 public int ID { get; set; }
 public int? OfficeID { get; set; }

 [ForeignKey("OfficeID ")]
 public virtual Offices OfficeID_Offices { get; set; }
}

public class Offices
{
[Key]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
    //Navigation  Properties
    public virtual ICollection<Person> Person_OfficeID { get; set; }

}

然后我的控制器中有以下功能

  [HttpPost]
    public Person Read(int intID)
    {
        Person objData = (from obj in objDB.Persons
                               where obj.ID == intID && !obj.Deleted
                               select obj).FirstOrDefault();
    }

通过jquery $ .Ajax调用调用此控制器方法,该调用返回JSON对象。由于我的外键OfficeID_Offices是虚拟的,我希望只在我明确要求它时加载。但是,当我查看我返回的JSON对象时,我可以看到整个Offices对象也被返回。

我的DbContext似乎启用了延迟加载,所以我想知道如何避免返回整个Office对象。

谢谢!

1 个答案:

答案 0 :(得分:1)

实体对象的序列化访问触发延迟加载的属性。要禁用延迟加载,请将objDB.Configuration.LazyLoadingEnabled属性设置为False