C# 实体框架核心2并不急于加载包含的实体

C# 实体框架核心2并不急于加载包含的实体,c#,entity-framework,.net-core,entity-framework-core,C#,Entity Framework,.net Core,Entity Framework Core,我有一些代码,我正在从dotnetcore1.1升级到dotnetcore2.0(相应地,EF core从1升级到2) 我有以下模型(当然是匿名的),并使用Npgsql与postgres数据库进行对话 [Table("company")] public class Company { [Key, Column("id")] public int Id { get; set; } [Column("name", TypeName = "VARCHAR")] public stri

我有一些代码,我正在从dotnetcore1.1升级到dotnetcore2.0(相应地,EF core从1升级到2)

我有以下模型(当然是匿名的),并使用Npgsql与postgres数据库进行对话

[Table("company")]
public class Company
{
  [Key, Column("id")]
  public int Id { get; set; }

  [Column("name", TypeName = "VARCHAR")]
  public string Name { get; set; }

  [Column("serialnumber")]
  public int SerialNumber { get; set; }

  [ForeignKey("serialnumber")]
  public virtual CompanyTypeMarker CompanyTypeMarker { get; set; }
}

[Table("companytypemarker")]
public class CompanyTypeMarker
{
    [Key, Column("serialnumber"), DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int SerialNumber { get; set; }

    [Column("sitetype")]
    public CompanyType CompanyType { get; set; } = CompanyType.Customer;
}
我有一个LINQ查询:

var company = await db.Companies
  .Include(c => c.CompanyTypeMarker)
  .FirstOrDefault(cc => cc.SerialNumber == serialNumber);
在dotnetcore1.1中,将加载
公司
实体,其关联的
公司类型标记
实体也将通过
公司.公司类型标记
属性加载和访问

在dotnetcore2.0中,加载
公司
实体,但
公司.CompanyTypeMarker
实体为空

查看日志输出,EF core正在生成以下SQL:

  SELECT "c"."id", "c"."name", "c"."serialnumber", "c.CompanyTypeMarker"."serialnumber", "c.CompanyTypeMarker"."companytype"
  FROM "company" AS "c"
  INNER JOIN "companytypemarker" AS "c.CompanyTypeMarker" ON "c"."serialnumber" = "c.CompanyTypeMarker"."serialnumber"
  WHERE "c"."serialnumber" = @__SerialNumber_0
  LIMIT 1
生成的SQL是EF core正在获取导航属性的证据,因为它为正确的属性生成了正确的SQL联接。。。只是当它返回到C#时,出于某种原因,它没有拾取并填充连接的值


有人能帮忙吗?如前所述,这在EF Core 1中起作用,而且看起来导航属性的标准用法是好的,事实证明,我在onmodel创建中也有这一功能

modelBuilder
  .Entity<Company>(entity => {
    entity.HasOne(x => { x.CompanyTypeMarker).WithOne().OnDelete(DeleteBehavior.Restrict);
  })
modelBuilder
.实体(实体=>{
entity.HasOne(x=>{x.CompanyTypeMarker).WithOne().OnDelete(DeleteBehavior.Restrict);
})
我将它改为
HasOne(…)。WithMany()
,现在它急切地正确加载