我在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对象。
谢谢!
答案 0 :(得分:1)
实体对象的序列化访问触发延迟加载的属性。要禁用延迟加载,请将objDB.Configuration.LazyLoadingEnabled
属性设置为False