Entity Framework Core 不保存相关数据

Dmi*_*nko 6 .net c# entity-framework

延续昨天的帖子

两个实体

public class Realtor
{
    public Realtor()
    {
        Guid = Guid.NewGuid();
        Registration = DateTime.Now;
    }
    public int Id { get; set; }
    public Guid Guid { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime Registration { get; set; }
    public int SubdivId { get; set; }
    public Subdiv Subdiv { get; set; }
}

public class Subdiv
{
    public Subdiv()
    {
        Created = DateTime.Now;
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Created { get; set; }
    public List<Realtor> Realtors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我花测试

  1. 我添加了一个 Subdiv (TOSTER TM) 并收到了他的 ID
  2. 接下来,我添加一个 Realtor,并推送在 ID 上找到的 Subdiv 属性,新创建的 TOSTER TM Realtor.Subdiv 是 Subdiv 类型的对象。好的。 在此输入图像描述

  3. 然后我尝试从基础中选择新添加的房地产经纪人。 Realtor.Subdiv = null我的天啊!! 在此输入图像描述

  4. 我们得到上面 Realtor 中缺少的 Subdiv 对象,看看他的List<Realtor> = null

在此输入图像描述

请帮助解决这个问题。

Gla*_*iar 5

尝试这个:

Relator rl = Context.Relators.Include(r => r.Subdiv).First(s => s.Id == id);
Run Code Online (Sandbox Code Playgroud)

现在您可以访问 Subdiv 属性

对于更多相关日期,您可以多次调用 Include 方法:

Relator rl = Context.Relators
                    .Include(r => r.Subdiv)
                    .Include(r => r.AnotherRel)
                    .First(s => s.Id == id);
Run Code Online (Sandbox Code Playgroud)

对于具有多个深度级别的实体:

如果 Subdir 是一个集合

Relator rl = Context.Relators
                    .Include(r => r.Subdiv)
                    .ThenInclude(sub => sub.SecondLevelDepth)
                    .First(s => s.Id == id);
Run Code Online (Sandbox Code Playgroud)

如果 Subdir 是一个实体

Relator rl = Context.Relators
                    .Include(r => r.Subdiv.Select(s => s.SecondLevelDepth)
                    .First(s => s.Id == id);
Run Code Online (Sandbox Code Playgroud)