我有以下型号
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()时,我最终得到两个记录(差异是主键ID),分别在Roles和Progams表中具有相同的Role.Name和Program.Name。
我的目标是让ProfessionalEmploymentRecord p与每个记录的单个(唯一)程序和角色建立联系。
编辑:
示例
如果我让ProfessionalEmploymentRecord成为 p.Role.Name =“分析师” p.Program.Name =“A”
然后Add()函数在ProfessionalEmploymentRecords中创建一条新记录,其中包含RoleId = 2和ProgramId = 2
在角色和程序表中,我最终得到了 角色 ID名称 1分析师 2分析师
程序 ID名称 1 A. 2 A
为简化问题,为什么Add函数会在其他两个表中创建条目?
答案 0 :(得分:0)
在Program and Role类中添加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; }
}