当我尝试更新我的应用程序用户配置文件我得到以下错误:UPDATE语句与FOREIGN KEY约束错误冲突?
The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_dbo.UserDetails_dbo.Companies_CompanyId". The conflict occurred in database "aspnet-eksp-20161223071733", table "dbo.Companies", column 'CompanyId'. The statement has been terminated.
尽管它可能看起来自我explenatory我不知道如何解决它,使我的代码工作。我对EF和整个平台都很新。
我确实在我的模型中有一个外键,当然这个关键字段是而不是是空的,它有一个值。
这里是模型:
public class UserDetails
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserDetailsId { get; set; }
public byte[] ImageData { get; set; }
[NotMapped]
public HttpPostedFileBase UploadImage { get; set; }
[NotMapped]
public string ImageBase64 => System.Convert.ToBase64String(ImageData);
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserAddress { get; set; }
public string UserCountry { get; set; }
public string UserPostalCode { get; set; }
public string UserPhoneNumber { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
public string identtyUserId { get; set; }
}
而且控制器方法:
public ActionResult Edit([Bind(Include = "UserDetailsId,ImageData,FirstName,LastName,UserAddress,UserCountry,UserPostalCode,UserPhoneNumber,CompanyId,identtyUserId")] UserDetails userDetails, HttpPostedFileBase UploadImage)
{
if (ModelState.IsValid)
{
byte[] buf = new byte[UploadImage.ContentLength];
UploadImage.InputStream.Read(buf, 0, buf.Length);
userDetails.ImageData = buf;
db.Entry(userDetails).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
//ViewBag.CompanyId = new SelectList(db.Companies, "CompanyId", "CompanyName", userDetails.CompanyId);
return View(userDetails);
}
在视图我可以更新的一切,但最后两个字段(模型),但我怀疑这是问题。
任何帮助将不胜感激。
当您开始编辑时,CompanyId的价值是什么?此值是否存在于数据库的相应表中?看起来好像你向数据库发送了一个更新语句,该语句包含了公司表中不存在的CompanyId值。 – Christos
正如我在问题中提到的,我不更新此值。当用户注册时插入模型的最后两个字段的值,并且我不想在之后对其进行更改。 –
@RobertRoss可以请你回答我的问题。我只是省略了所有使用FirstName的属性,但请尝试查看异常是否消失 –