最近我嘗試通過Entity Framework Code First在我的MVC應用程序中添加一對多關係。我添加了關係以將管理員名稱從下拉列表綁定到當前正在填寫的應用程序。所以我有一個表用於管理員名稱,一個表用於實際應用程序信息。管理員名稱的應用和下拉列表似乎做工精細,所有信息進入我的上提交的數據庫,但是當我嘗試編輯應用程序,我得到以下錯誤:UPDATE語句與FOREIGN KEY約束衝突
The UPDATE statement conflicted with the FOREIGN KEY constraint The conflict occurred in database table "dbo.Administrator", column 'AdministratorId'
我試過設置我的Id列到「不爲空」,但這並沒有解決問題。
型號:
public class Administrator
{
public int AdministratorId{ get; set; }
public string AdministratorName{ get; set; }
}
public class Application
{
public Application()
{
GetDate = DateTime.Now;
}
public int ApplicationId { get; set; }
[DisplayName("Marital Status")]
public bool? MaritalStatus { get; set; }
[Required]
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Middle Initial")]
public string MiddleInitial { get; set; }
[Required]
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Date Submitted")]
public DateTime GetDate { get; set; }
public int AdministratorId{ get; set; }
public virtual Administrator Administrator{ get; set; }
}
控制器(指數):
public ActionResult Index()
{
ViewBag.LoanOfficerId = new SelectList(db.Administrators, "AdministratorId", "AdministratorName");
return View();
}
// POST: Applications/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "AdministratorId,FirstName,MiddleInitial,LastName,")] Application application)
{
if (ModelState.IsValid)
{
ViewBag.AdministratorId= new SelectList(db.Administrators, "AdministratorId", "AdministratorName", application.Administrator);
db.Applications.Add(application);
db.SaveChanges();
return RedirectToAction("Thanks");
}
return View(application);
}
錯誤表明您正在嘗試將重複數據放入您的'AdministratorId' id列中......我沒有看到它與您的模型有任何關係。 – paqogomez 2014-12-01 19:19:36
您的代碼中某處必須嘗試更改管理員表中的記錄。該錯誤意味着該記錄的ID正被用作另一個表中的外鍵。 – Icemanind 2014-12-01 19:19:45
在SaveChanges被調用之前,AdministratorId的值是什麼?我的猜測是該值爲0. – maxbeaudoin 2014-12-01 19:21:02