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一
爲了簡化問題,爲什麼添加功能創建條目到其他兩個表?
p在添加(p)是來自剃刀視圖創建的輸入。 – Rafet 2012-08-08 08:03:57
這看起來像重複操作。如果p已經有一個程序,爲什麼你需要爲它分配一個ID? GetProgramId和GetProfessionalId中的代碼是什麼? – 2012-08-08 08:05:43
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