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 的两条记录(差异是主键 ID)。

我的目标是让 ProfessionalEmploymentRecord p 与每个记录 p 的单个(唯一)程序和角色相关联。

编辑:

一个例子

如果我让 ProfessionalEmploymentRecord p 成为 p.Role.Name = "Analyst" p.Program.Name= "A"

然后 Add() 函数在 ProfessionalEmploymentRecords 中创建一个新记录,其中包含 RoleId = 2 和 ProgramId = 2

在 Roles 和 Programs 表中,我最终得到 Roles ID Name 1 Analyst 2 Analyst

程序 ID 名称 1 A 2 A

为了简化问题,为什么 Add 函数会在另外两个表中创建条目?

4

1 回答 1

0

在 Program 和 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; }
}
于 2012-08-08T08:34:16.797 回答