2012-08-08 101 views
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()方法我结束了两个记录(区别是主键ID)与同Role.Name和Program.Name分别在Roles和Progams表中。

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

编辑:

为例

如果我让ProfessionalEmploymentRecord p为 p.Role.Name = “分析” p.Program.Name = “A”

然后添加( )函数创建包含RoleId = 2和ProgramId = 2的ProfessionalEmploymentRecords中的新记录

在角色和程序表中,我以 结束角色 ID名称 1分析员 2分析员

计划 ID名称 1的 2一

为了简化问题,为什么添加功能创建条目到其他两个表?

+0

p在添加(p)是来自剃刀视图创建的输入。 – Rafet 2012-08-08 08:03:57

+0

这看起来像重复操作。如果p已经有一个程序,为什么你需要为它分配一个ID? GetProgramId和GetProfessionalId中的代码是什么? – 2012-08-08 08:05:43

+0

Amiram,Get * Id看起来像private int GetProgramId(string Name){try {int ID =(from p in db.Programs where p.Name.Equals(Name)select p.ID).First();返回ID; } catch {//抛出新的异常(“找不到名称的ID”+名称);返回0; }} – Rafet 2012-08-08 08:11:31

回答

0

在程序和角色类中添加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; } 
} 
相关问题