在Entity Framework Core中,集合为空,引用的实体为null(数据库优先)

时间:2019-06-01 20:41:47

标签: c# entity-framework entity-framework-core

我有一个数据库,并使用C#生成了类。

2个表:UserCompany

User看起来像这样:

public int CompanyId { get; set; }
public virtual Company Company { get; set; }

Company看起来像这样:

public virtual ICollection<User> Users { get; set; }

我得到这样的Company

 User user = unitOfWork.Users.Where(x => x.Id == 1).SingleOrDefault();

在我的数据库中,有一个插入的ID为1的用户和一个公司,以及从用户到公司的引用(companyId)。

我的用户对象现在有companyId,整数为1。但是Company为空。

我与一对多关系存在相同的问题,因此集合为空。

这是为用户生成的:

entity.HasIndex(e => e.CompanyId)
      .HasName("IX_Company_Id");   
entity.Property(e => e.CompanyId).HasColumnName("Company_Id");
entity.HasOne(d => d.Company)
      .WithMany(p => p.User)
      .HasForeignKey(d => d.CompanyId)
      .HasConstraintName("FK_dbo.User_dbo.Company_Company_Id");

1 个答案:

答案 0 :(得分:0)

如果您还想为用户获取$push,请像这样使用Company

.Include()

由于User user = unitOfWork.Users .Include(u => u.Company) .SingleOrDefault(x => x.Id == 1); 上的CompanyUser属性,因此默认情况下它是延迟加载的-除非您使用virtual子句明确包含它。