繁体   English   中英

EF Core 中的导航属性为 NULL

[英]Navigation Property in EF Core is NULL

有人可以指导我如何在下表中构建正确的属性导航吗?

我的数据库中有这些表:

在此处输入图像描述

在此处输入图像描述

然后我需要关联Status表以获取每个表上的状态Name

在此处输入图像描述

这些是我的 model 类:

[Table("Companies")]
public class CompanyEntity
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public int Status_Id { get; set; }

    public DateTime Created_Date { get; set; }

    public DateTime Updated_Date { get; set; }

    [ForeignKey("Status_Id")]
    public Status Status { get; set; }
}

[Table("Customers")]
public class CustomerEntity
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public int Status_Id { get; set; }

}

[Table("Status")]
public class Status
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public Company Company { get; set; }
}

我的目标是当我获得所有使用DBContextCompaniesCustomers时,例如var companies = _dbContext.Companies.ToList() 我想获得CompaniesCustomers的每条记录的状态。 我不太确定如何为上述模型正确构建导航属性。

蒂亚!

更新#1

遵循以下建议后,是的, Status不再是NULL 但是,它得到了错误的状态 ID。 它不使用Status_Id ,而是使用公司的Id 请看下面的片段。 该公司的状态为6

在此处输入图像描述

但是,如果您在第二个片段上注意到,状态为3 ,即公司的Id 在此处输入图像描述

我在OnModelCreating也有这段代码。

            modelBuilder.Entity<Company>()
                .HasOne<Status>()
                .WithMany()
                .HasForeignKey(p => p.Status_Id);

这就是我得到这种行为的原因。 但是如果我删除了这个, Status属性就会得到NULL

您必须添加.Include()方法才能在结果中加入您的状态表,如下所示:

_dbContext.Companies.Include(c => c.Status).ToList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM