[英]The UPDATE statement conflicted with the FOREIGN KEY constraint
最近,我嘗試通過Entity Framework Code First在我的MVC應用程序中添加一對多關系。 我添加了關系以將管理員名稱從下拉列表綁定到正在填寫的當前應用程序。 因此,我有一張表用於管理員名稱,另一張表用於實際的應用程序信息。 管理員名稱的應用程序和下拉列表似乎運行良好,並且所有信息都在提交時進入我的數據庫,但是當我嘗試編輯應用程序時,出現以下錯誤:
UPDATE語句與FOREIGN KEY約束沖突在數據庫表“ dbo.Administrator”的“ AdministratorId”列中發生了沖突
我嘗試將Id列設置為“ Not Null”,但這不能解決問題。
模型:
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是int類型,因此默認值為0。除非數據庫中的Administrator記錄中AdministratorId為0,否則這將破壞外鍵約束。
將AdministratorId的類型更改為int? 應在Application類上解決此問題。
就我而言,當我嘗試使用空值作為外鍵字段的值更新對象時,出現了此錯誤。
因此,當您更新對象時,請指出您的Fkey或在調用savechanges
之前使用:
db.Entry(Myobject).Property(u => u.MyForeignkey).IsModified = false;
db.SaveChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.