0

私には2つのエンティティがあります。1つは研究のコレクションを持つ患者です。

public class Patient
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public List<Study> Studies { get; set; }
}

public class Study
{
    public Guid Id { get; set; }
    public Guid PatientId { get; set; }
    public string Name { get; set; }
}

このオブジェクトをデータベース「 Patients」と「Studies 」の2つのテーブルにマップしたいと思います。これを行うための構文はどうあるべきですか?「 EntityTypeConfiguration 」を使用しています。

class PatientEntityTypeConfiguration : EntityTypeConfiguration<Patient>
{
    public PatientEntityTypeConfiguration()
    {
        this.HasKey(p => p.Id);

        this.Property(p => p.Name)
            .HasMaxLength(50)
            .IsRequired();

        //TODO: Map the studies!!!

        this.ToTable("Patients");
    }
}
4

1 に答える 1

2

まず、 PluralizationServiceの独自の実装でこれを特にオフにしない限り、テーブルの複数のバージョンを手動で作成する必要はありません。

モデルを少し更新します。

public class Study
{
    public Guid Id { get; set; }
    public virtual Guid PatientId { get; set; }
    //Add the navigation for Patient
    public virtual Patient Patient {get;set;}
    public string Name { get; set; }
}

マッピングは次のようになります。プロパティを仮想化することで、遅延読み込みが可能になります。

class PatientEntityTypeConfiguration : EntityTypeConfiguration<Patient>
{
    public PatientEntityTypeConfiguration()
    {
       HasKey(p => p.Id);

       Property(p => p.Name)
            .HasMaxLength(50)
            .IsRequired();

       HasMany(p => p.Studies)
       .WithRequired(s => s.Patient)
       .HasForeignKey(s => s.PatientId).WillCascadeOnDelete(false);


    }
}
于 2013-01-04T00:47:14.790 に答える