2013-12-02 4 views
1

У меня есть проблема с ленивым поведения нагрузки в EntityFramework 5. Вот мои две моделиЛенивая загрузка в Entity Framework

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, я вижу, что возвращается весь объект Office.

В моем DbContext включена функция Lazy loading, поэтому мне интересно, как я мог избежать возврата всего объекта Office.

Спасибо!

+0

Что вы используете для просмотра объекта JSON? Потому что вы можете вызвать вызов в базу данных, чтобы захватить объект. Кроме того, он возвращает фактический объект или является динамическим прокси этого объекта? – IronMan84

+0

Он возвращает фактический объект, поэтому представление JSON всех свойств Office – Sdupere

ответ

1

Сериализация объектов сущностей (-ов) осуществляет доступ к свойству, которое запускает ленивую загрузку. Чтобы отключить ленивую загрузку, установите objDB.Configuration.LazyLoadingEnabled на False

+0

Это имело бы смысл. Значит, вы говорите, что я не могу использовать ленивую загрузку? Каковы мои альтернативы, если я хочу, чтобы объект Office возвращался только по требованию? – Sdupere

+0

Я не понимаю, что вы спрашиваете – Moho

+0

Если для ленивой загрузки установлено значение false, не будет ли возвращен мой объект Office? Итак, такое же поведение у меня сейчас? – Sdupere

Смежные вопросы