在尝试更新Entity Framework中的表时如何处理分离的模型

时间:2015-04-17 16:34:08

标签: c# entity-framework attached-properties

这就是我想要做的并且目前正在收到错误:

  

ApplicationId是对象关键信息的一部分,无法修改

ApplicationIdApplicant表中的主键。

我做错了什么?

var existingApplicant = db.Applicants.Where(x => x.LoginId == LoginId).FirstOrDefault();    
var attachedEntry = db.Entry(existingApplicant);
attachedEntry.Property(x => x.ApplicantId).IsModified = false;
attachedEntry.CurrentValues.SetValues(updatedApplicant);
db.SaveChanges();

2 个答案:

答案 0 :(得分:0)

看起来你告诉州经理该财产没有改变,然后改变它,这标志着它已经改变了。 尝试交换第3行和第4行,这样你就可以将attachedEntry.ApplicantId设置为updatedApplicant.ApplicantId,然后告诉状态管理它没有改变。

如果这不起作用,请尝试在使用SetValues之前保存Id,然后将其重新设置为旧值。

答案 1 :(得分:0)

呃......我忘了updatedApplicant有新的ApplicbntId,它与现有申请人中的ApplicantId不同。

我所要做的只是说: applicant.ApplicantId = existingApplicant.ApplicantId;