0

私は次のモデルを持っています

public class ProfessionalEmploymentRecord
{
    public int ID { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    public virtual Role Role { get; set; }
    public virtual Program Program { get; set; }
}

public class Program
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class Role
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public ActionResult Add(ProfessionalEmploymentRecord p)
{
    if (ModelState.IsValid)
    {
        //Check which program is being considered
        p.Program.ID = GetProgramId(p.Program.Name);
        p.Role.ID = GetProfessionalId(p.Role.Name);
        db.ProfessionalEmploymentRecords.Add(p);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(p);
}

Add()を使用すると、RolesテーブルとProgamsテーブルでそれぞれ同じRole.NameとProgram.Nameを持つ2つのレコード(主キーIDが異なる)になります。

私の目標は、ProfessionalEmploymentRecord pを使用して、レコードpごとに単一の(一意の)プログラムおよびロールと関連付けることです。

編集:

ProfessionalEmploymentRecordpをp.Role.Name="Analyst" p.Program.Name="A"にすると

次に、Add()関数は、RoleId=2およびProgramId=2を含むProfessionalEmploymentRecordsに新しいレコードを作成します。

ロールとプログラムのテーブルでは、ロールID名1アナリスト2アナリストになります。

プログラムID名1A2 A

質問を単純化するために、Add関数が他の2つのテーブルにエントリを作成するのはなぜですか?

4

1 に答える 1

0

ProgramandRoleクラスにProfessionalEmploymentRecordの参照を追加します。

public class Program
{
   public int ID { get; set; }
   public string Name { get; set; }
   public virtual ProfessionalEmploymentRecord ProfessionalEmploymentRecord { get; set; }
}

public class Role
{
   public int ID { get; set; }
   public string Name { get; set; }
   public virtual ProfessionalEmploymentRecord ProfessionalEmploymentRecord { get; set; }
}
于 2012-08-08T08:34:16.797 に答える