实体框架核心关系集合为空



我确实做了一个数据库优先的方法,我确实做了我的数据库。我使用关系,我有两个表:

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

当我做脚手架时,模型看起来有点像这样:

用户.cs:

public User()
{
    Rooms = new HashSet<Room>();
}
public int Id { get; set; }
public string Username { get; set; }
public virtual ICollection<Room> Rooms { get; set; }

房间.cs:

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

(所有者 ID 可为空,因为系统会议室没有分配的所有者(

问题是,如果我在登录时获得了我的用户对象,并且我查看了user.Rooms,则集合始终为空,即使数据库具有条目也是如此。

我知道包括修复程序,但这让我不得不从数据库中加载所有房间,当程序开始时加载 1000+ 个房间时,这是一个糟糕的主意。

为什么即使关系设置正确,集合也始终为空?

设置关系 IP 不同于在内存上加载相关实体。您可以根据需要选择4种不同的加载机制。

  1. 渴望(包括然后包括(
  2. 明确
  3. 延迟加载(EF Core 2.1(
  4. 选择加载

您可以使用选择加载来筛选必须加载的相关实体。因此,您不需要加载所有相关的元素。

最新更新