0

У меня есть следующие модели:Entity Framework и отложенная загрузка не работает

public sealed class Consignor : TwoNames 
{ 
    public Consignor() 
    { 
     Address = new Address(); 
    } 
} 

Это мать класс TwoNames выглядит следующим образом:

public abstract class TwoNames : Search 
{ 
    [Required] 
    public int AddressId { get; set; } 
    public virtual Address Address { get; set; } 

    [Required] 
    public string Name1 { get; set; } 
    public string Name2 { get; set; } 
} 

И мой адрес модель здесь:

public class Address : Model 
{ 
    [Required] 
    public string Street { get; set; } 
    [Required] 
    public string ZipCode { get; set; } 
    [Required] 
    public string City { get; set; } 
    public string Country { get; set; } 
    public string Email { get; set; } 
} 

Все они наследуются от «Модели». Модель имеет только идентификатор. Все работает хорошо, НО: Ленивая загрузка, похоже, не работает.

Я загружая грузоотправитель, как это:

List<Consignor> consignors = UnitOfWork.ConsignorRepository.Get().ToList(); 

Всех грузоотправителей получил правильный AddressID и адрес не является нулевым (я думаю из-за мой конструктор в классе Грузоотправителя), но свойство Address является не заполнено правильно (без улицы, без почтового индекса и т. д.).

ответ

1

Похоже, что конструктор Отправитель будет создавать новый объект адреса с пустой улицей, почтой и т. Д. (Как вы упомянули в своем последнем абзаце); если вы удалите экземпляр адреса, вы должны получить недогруженный адрес на своих объектах отправителя, который можно лениво загрузить при необходимости.

+1

Абсолютно верно. Это заставило меня вернуться [этот ответ] (http://stackoverflow.com/a/20773057/861716). –

+0

Правильно. Я полностью удалил конструктор. Теперь, когда я загружаю адрес отправителя, всегда имеет значение null и к нему нельзя получить доступ (NullPointerException) ... – mosquito87

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