【问题标题】:Unable to save edited object无法保存编辑的对象
【发布时间】:2015-10-01 13:26:30
【问题描述】:

我创建了管理员面板,管理员可以在其中编辑和更新学生列表。数据已正确编辑,但保存时出错。

错误:

发生了参照完整性约束违规:属性 关系一端的“ApplicationUser.Id”的值不 匹配“student.ApplicationUserID”的属性值 另一端

我认为问题是因为我将User.id应用于ApplicationUserID,但我不知道如何解决它。

我的学生班级如下:

public class student 
{ 
   public int Id { get; set; }  
   public string FirstName { get; set; }  
   public string SecondName { get; set; }  
   public string ClassName { get; set; }
   public virtual ApplicationUser Users { get; set; } 
   public string ApplicationUserID { get; set; }    
}

保存ActionResult的方法是:

public ActionResult Edit(student st)
{
    ApplicationDbContext db = new ApplicationDbContext();

    //UpdateModel<istudent>(st);
    if (ModelState.IsValid)
    {
        db.Entry(st).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View("Index");
}

【问题讨论】:

标签: c# asp.net-mvc entity-framework


【解决方案1】:

您正在更新 ApplicationUserId 外键值而不更新原始 ApplicationUser.Id 值。

参照完整性似乎表明关系外键约束违反。

【讨论】:

  • 我需要阅读它。但漫长的道路是加载主要对象并在那里更新它。我认为您不应该自行更新外键。那总是会出错。实际上,可能不允许对其进行编辑,否则您将始终收到此错误。它应该从 Primary 对象中绘制自己。 (关系数据库逻辑)
  • 我不确定。但是如果你在 EF 中引用一个对象,如果主对象被更新,它应该更新对它的引用。
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 2018-01-20
相关资源
最近更新 更多