0

Я отключил lazy-load в моем контексте Entity Framework db. Но по-прежнему возникают проблемы со следующими моделями:Не виртуальные свойства инициализируются, даже когда ленивая загрузка отключена

public class Currency 
{ 
    //properties 
    public ICollection<ConversionRate> ConversionRates{get;set;} 

    public Currency() 
    { 
     ConversionRates = new HashSet<ConversionRate>(); 
    } 
} 

преобразования класса Rate выглядит следующим образом:

public class ConversionRate 
{ 
    [ForeignKey("FromCurrencyId")] 
    public Currency FromCurrency { get; set; } 

    public Guid FromCurrencyId { get; set; } 

    [ForeignKey("ToCurrencyId")] 
    public Currency ToCurrency { get; set; } 

    public Guid ToCurrencyId { get; set; } 
} 

Ниже приведены конфигурации:

///Currency 
HasMany(x => x.ConversionRates).WithRequired(x => x.FromCurrency); 
HasMany(x => x.ConversionRates).WithRequired(x => x.ToCurrency); 

Когда я использую следующее заявление, чтобы получить ConversionRate S:

var cr = _uow.ConversionRates.Query 
      .Include(x=>x.FromCurrency) 
      .Include(x=>x.ToCurrency) 
      .FirstOrDefaultAsync(x=>x.Id==id); 

следующие коллекции заселены:

cr.FromCurrency.ConversionRates 
cr.ToCurrency.ConversionRates 

Что я делаю неправильно, что заполнение коллекции?

ответ

0

Ваша коллекция ConversionRates должна быть определена как виртуальная. https://msdn.microsoft.com/en-us/data/jj574232.aspx#lazy

+0

ну с того же поста: ** ленивая загрузка коллекций Сообщений может быть отключена, сделав свойство Posts *** не виртуальным ***: ** – TheVillageIdiot

+0

Извините, неправильно прочитано. Теперь, когда я прочитал его ближе, вы отключили ленивую загрузку и сделали коллекцию не виртуальной, не так ли ожидаемое поведение (что коллекции заполнены)? –

+0

Да, именно эта аномалия - это то, что меня озадачивает !!! Я не могу сериализовать и отправлять его как JSON из-за круговой ссылки. – TheVillageIdiot

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