Entity framework 实体框架中的延迟加载
我对EntityFramework 5中的延迟加载行为有一个问题。这是我的两个模型Entity framework 实体框架中的延迟加载,entity-framework,entity-framework-5,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 Off
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; }
此控制器方法通过jquery$.Ajax调用调用,该调用返回一个JSON对象。因为我的外键OfficeID_Offices是虚拟的,所以我希望只有在明确要求时才能加载它。但是,当我查看返回的JSON对象时,我可以看到整个Office对象也被返回
在我的DbContext中似乎启用了延迟加载,因此我想知道如何避免返回整个Office对象
谢谢大家! 实体对象的序列化访问触发延迟加载的属性。要禁用延迟加载,请将
objDB.Configuration.LazyLoadingEnabled
属性设置为False
实体对象的序列化访问触发延迟加载的属性。要禁用延迟加载,请将objDB.Configuration.LazyLoadingEnabled
属性设置为False
您使用什么来查看JSON对象?因为您可能正在触发对数据库的调用以获取对象。另外,它返回的是实际对象,还是该对象的动态代理?它返回的是实际对象,所以所有Office属性的JSON表示您使用什么来查看JSON对象?因为您可能正在触发对数据库的调用以获取对象。另外,它返回的是实际对象,还是该对象的动态代理?它返回的是实际对象,因此所有Office属性的JSON表示是有意义的。所以基本上你是说我不能使用延迟加载?如果我只想按需返回Office对象,我有什么选择?我不会按照你的要求执行如果lazy loading设置为false,我的Office对象不总是会返回吗?那么,与我现在的行为相同吗?不,集合将为空/null,除非您通过急切加载方法或manuallyOk显式填充它,我将研究急切加载。非常感谢。这是有道理的。所以基本上你是说我不能使用延迟加载?如果我只想按需返回Office对象,我有什么选择?我不会按照你的要求执行如果lazy loading设置为false,我的Office对象不总是会返回吗?那么,与我现在的行为相同吗?不,集合将为空/null,除非您通过急切加载方法或manuallyOk显式填充它,我将研究急切加载。非常感谢。
[HttpPost]
public Person Read(int intID)
{
Person objData = (from obj in objDB.Persons
where obj.ID == intID && !obj.Deleted
select obj).FirstOrDefault();
}