Коллекция базовых отношений Entity Framework пуста - PullRequest
0 голосов
/ 31 мая 2019

Я сделал первый подход к базе данных, и я сделал свою базу данных.Я использую отношения и у меня есть две таблицы:

users
-------------
id PK int(11)
username UNIQUE varchar(20)

rooms
-------------
id PK int(11)
name VARCHAR(30) NOT NULL
owner_id INDEX int(11) -> FK to users.id

Когда я делаю каркас, модели выглядят примерно так:

User.cs:

public User()
{
    Rooms = new HashSet<Room>();
}

public int Id { get; set; }
public string Username { get; set; }
public virtual ICollection<Room> Rooms { get; set; }

Room.cs:

public int Id { get; set; }
public string Name { get; set; }
public int? OwnerId { get; set; }

public virtual User Owner { get; set; }

(OwnerId обнуляется, так как у системных комнат нет назначенного владельца)

Проблема заключается в том, что при входе в систему мой пользовательский объект был получени я смотрю user.Rooms, коллекция всегда пуста, даже если в базе данных есть запись.

Я знаю, что в include это исправлено, но это заставляет меня загружать ВСЕ комнаты из базы данных, которая являетсяужасная идея, когда при запуске программы загружается более 1000 комнат.

Почему коллекция всегда пуста, даже если отношения установлены правильно?

1 Ответ

0 голосов
/ 31 мая 2019

Настройка взаимосвязей отличается от загрузки связанных сущностей в память.Существует 4 различных механизма загрузки, которые вы можете выбрать в соответствии с вашими потребностями.

  1. Стремление (включите и затем включите)
  2. Явное
  3. Ленивая загрузка (EF Core 2.1)
  4. Выбор загрузки

Вы можете использовать выбор загрузки, чтобы отфильтровать, какие связанные объекты должны быть загружены.Таким образом, вам не нужно загружать все связанные права.

...