我有一个应用程序,商店可以完成调查问卷。
在这个应用程序中我有两个表
db.StoreAud(pk:AuditId) which contains all the stores information
db.storequests(pk:ReviewId) which holds the all questions information.
AuditId is a foreign key in db.storequests table.
现在问题是,如果商店完成调查问卷,数据完全保存在数据库中,然而同样的商店再次调查问卷,db.storequests在数据库中使用新的主键值而不是更新上一行。
我希望突出显示的行更新第二行数据。
问题是,如果同一商店再次进行相同的调查问卷,我该如何更新上一行。希望这可以做到。
db.StoreAUD
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Column(Order = 1)]
public int AuditId { get; set; }
public string Date { get; set; }
public int StoreNumber { get; set; }
public string StoreName { get; set; }
db.storequests
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int ReviewId { get; set; }
public int AuditId { get; set; }
public int QuestionOne { get; set; }
public string QuestionTwo { get; set; }
public string QuestionThree { get; set; }
public string QuestionFour { get; set; }
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(StoreQuestions storequestions)
{
if (ModelState.IsValid)
{
StoreAudit findingAudit = db.StoreAudit.Find(storequestions.AuditId); // grabbing the id from th store audit table
findingAudit.ReadOnlyTickBox = true;
db.StoreQuestions.Add(storequestions);
db.SaveChanges();
return RedirectToAction("Details", "Audit", new { id = storequestions.AuditId });
}
return View(storequestions);
}
答案 0 :(得分:0)
您需要将实体状态设置为已修改而不是执行添加。
请查看下面的示例示例
StoreAudit findingAudit = db.StoreAudit.Find(storequestions.AuditId);
findingAudit.ReadOnlyTickBox = true;
db.Entry(findingAudit ).State = EntityState.Modified;
db.SaveChanges();