EF Core Создание объекта с «бесконечной» глубиной - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть отношение M к N в моей базе данных. Я взял образец базы данных "sakila" со страницы MySql. Я установил свои модельные объекты следующим образом.

Пленочный стол

public partial class Film
    {
        public Film()
        {
            FilmActor = new HashSet<FilmActor>();
            FilmCategory = new HashSet<FilmCategory>();
            Inventory = new HashSet<Inventory>();
        }

        //Some Properties


        public ICollection<Inventory> Inventory { get; set; }
    }

Инвентаризация связующих таблиц

public partial class Inventory
    {
        public Inventory()
        {
            Rental = new HashSet<Rental>();
        }

        public int InventoryId { get; set; }
        public short FilmId { get; set; }
        public byte StoreId { get; set; }
        public DateTimeOffset LastUpdate { get; set; }

        public Film Film { get; set; }
        public Store Store { get; set; }
        public ICollection<Rental> Rental { get; set; }
    }

Таблица магазинов

public partial class Store
    {
        public Store()
        {
            Customer = new HashSet<Customer>();
            Inventory = new HashSet<Inventory>();
            Staff = new HashSet<Staff>();
        }

        //More Properties
        public ICollection<Inventory> Inventory { get; set; }

    }

Когда я иду, чтобы получить Данные через Репозиторий, я получаю список Store объектов, у которого есть список Inventory, у которого есть список фильмов, у которого есть список магазинов ... Другими словами: store [2] -> инвентарь [2270] -> пленка-> store [2] -> инвентарь ... до бесконечности.

Так, как мне сделать эту остановку, когда моя Модель доберется до объектов фильма?

1 Ответ

0 голосов
/ 06 ноября 2018

Entity Framework отслеживает объекты базы данных по умолчанию, когда вы запрашиваете их. Если вы извлекаете дочерние или родительские объекты в своем запросе через ленивую или энергичную загрузку, они будут «сохранены» в (локальном) контексте.

Это означает, что всякий раз, когда вы входите в режим отладки и достигаете точки останова, вы можете бесконечно перемещаться по дереву объектов. Во время выполнения это не оказывает реального влияния на производительность.

...