EF CORE 数据注释和 JOINS

EF CORE Data Annotations and JOINS

我正在尝试查询旧数据库(我无法更改)。

每个 table 都有一个 RecordId,这是一个唯一的 ID。 table 由其帐号字段关联。

class tblOneToOne
{
[ForeignKey("Accountno")]
public string Accountno {get; set;}
public string Recordid {get; set; }
public string fields {get; set; }
}

class tblOneToMany
{
[ForeignKey("Accountno")]
public string Accountno {get; set;}
public string Recordid {get; set; }
public string Ref {get; set; }
}

class tblContact
{
[ForeignKey("Accountno")]
public string Accountno {get; set;}
[key]
public string Recordid {get; set; }
public string Company {get; set; }
public string Contact {get; set; }

public tblOneToOne tblOneToOne {get; set; }

public tblOneToMany tblOneToMany {get; set; }
}

我试过使用 Fluent Api 指定外键

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<tblContact>().ToTable("Contact")
              .HasMany(c => c.tblOneToMany)
              .WithOne(cs => cs.tblContact)
              .HasForeignKey(c => c.Accountno);

}

然后我查询了一条确实有多个 tblOneToMany 记录的记录,但没有返回任何结果。

var c = _context.tblContact
                .Include("tblOneToMany")
                .FirstOrDefaultAsync(c => c.Accountno == accountno);

  return c;

我应该怎样做才能返回正确的结果?

如有任何帮助,我们将不胜感激。

我终于设法使用 Fluent API 解决了我的问题。

我从 类 中删除了外键数据注释,并使用以下 Fluent Api 来指定表上的外键。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<tblContact>(entity =>
  {
    entity.HasKey(c => c.Accountno);

    entity.HasOne(c => c.tblOneToOne)
          .WithOne(c => c.tblContact)
          .HasForeignKey<tblOneToOne>(c => c.Accountno);

    entity.HasMany(c => c.tblOneToMany)
          .WithOne(c => c.tblContact)
          .HasForeignKey(cs => cs.Accountno);

  });
}