Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 实体框架中的延迟加载_Entity Framework_Entity Framework 5 - Fatal编程技术网

Entity framework 实体框架中的延迟加载

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

我对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; }
此控制器方法通过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();
    }