0

私のプロジェクトには、「教育者」と「教育者ライセンス」という 2 つのテーブルがあります。

教育者ライセンスは、外部キーを持つ教育者テーブルに依存しています。(DBファースト)

データベース内の ID を持つ外部キー: (教育者は N ライセンスを持つことができます)

ここに画像の説明を入力

私の教育者モデルは次のようになります:

public class Educator
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [JsonIgnore]
    public int id { get; set; }
    [JsonIgnore]
    public int CompanyId { get; set; }
    public string PublicId { get; set; }
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
    public int Password { get; set; }
    public bool Gender { get; set; }
    public string AdminNote { get; set; }
    public List<EducatorLicense> EducatorLicense { get; set; }
    public bool Status { get; set; }
    public TimestampsModel Timestamps { get; set; }
}

私の教育者ライセンスモデルは次のようになります:

public class EducatorLicense
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }
    [JsonIgnore]
    public int EducatorId { get; set; }
    public string LicenseType { get; set; }
}

私のDbContext:

protected override void OnModelCreating(ModelBuilder model)
{
    model.Entity<Educator>(builder =>
    {
        builder.ToTable("educators");
        builder.Property(p => p.id)
            .ValueGeneratedOnAdd();
        builder.OwnsOne(c => c.Timestamps,
            a =>
            {
                a.Property(p => p.CreatedAt).HasColumnName("createdAt");
                a.Property(p => p.UpdatedAt).HasColumnName("updatedAt");
            });

        builder.HasOne(d => d.EducatorLicense)
            .WithMany()
            .HasForeignKey(d => d.Id)
            .OnDelete(DeleteBehavior.ClientSetNull)
            .HasConstraintName("educatorlicenses_educatorid_foreign");
    });

    model.Entity<EducatorLicense>(builder =>
    {
        builder.Property(p => p.id)
            .ValueGeneratedOnAdd();
        builder.HasKey(c => c.id);
    });
}

そして私はその例外を得ました: ここに画像の説明を入力

教職員表を取得する際に教職員証表も一緒に取得してほしい。

遅延ロードでデータベースに 2 回アクセスすることで、ビジネス レイヤーでこれを実行できると思います。

外部で接続された2つのテーブルを一度に取得する方法はありますか?

4

2 に答える 2