Почему основные навигационные свойства EF не заполняются?

#entity-framework #asp.net-core #entity-framework-core

#entity-framework #asp.net-core #entity-framework-core

Вопрос:

Я сталкиваюсь с проблемой с приведенным ниже кодом

         public async Task<IActionResult> Index()
    {
        var mainPageViewModel = new MainPageViewModel()
        {
            Walls = await _unitOfWork.Walls.GetAllAsync(),
            PopularStoreProducts = await Context.Set<StoreProduct>().Include(sp => sp.Product).Include(sp => sp.Store).ToListAsync(),
            Reviews = await _unitOfWork.Reviews.GetAllWithIncludeAsync()
        };
        var cartItems = await Context.Set<CartItem>().Include(ci => ci.StoreProduct).ThenInclude(sp => sp.Product)
            .Include(ci => ci.StoreProduct).ThenInclude(sp => sp.Store).ToListAsync(); ;

        return View(mainPageViewModel);
    }
 

Когда я отслеживаю приведенный выше код, cartItems.StoreProduct будет иметь значение не null, а пустой StoreProduct .

Все будет хорошо, когда я удалю эту строку:

 PopularStoreProducts = await Context.Set<StoreProduct>().Include(sp => sp.Product).Include(sp => sp.Store).ToListAsync(),
 

Мой вопрос в том, почему свойства навигации устанавливаются пустыми, когда я уже прочитал эти свойства навигации в своих запросах.

Заранее спасибо.

Комментарии:

1. Убедитесь, что вы не инициализируете ссылочное свойство навигации CarItem.StoreProduct для new StoreProduct()

2. Это ваш точный код? Есть ли у вас какой-либо другой промежуточный код, который выполняет что-то вроде удаления ненужных сведений из mainPageViewModel. Популярные продукты магазина? (код ничего не делает с заголовками) Когда вы вызываете EF DbContext для извлечения PopularStoreProducts, он загружает ссылки на эти объекты. Более поздний вызов для этих таблиц вернет те же ссылки, где они доступны, вместо того, чтобы обращаться к базе данных для их повторного извлечения.