私は次のモデルを持っています
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つのテーブルにエントリを作成するのはなぜですか?