实体框架6-通过复制另一个数据库记录来更新数据库记录

时间:2018-11-23 14:44:39

标签: asp.net-mvc entity-framework model-view-controller asp.net-mvc-5 entity-framework-6

我刚开始使用Asp.NET MVC和EF,我想对于我想做的事情必须有一个简单的解决方案。

我想做什么:

使用另一个数据库记录的值更新现有数据库记录。

在“后控制器”操作中,我传递了原始记录的ID,并且该记录的ID应该复制到原始记录中。

var orgRecord = ctx.Model.Where(x => x.ID == vm.ID)...
var copyRecord = ctx.Model.Where(x => x.ID == vm.IDtoCopy)...

我尝试了不同的方法,但总是收到一个错误,指出 ID “是对象关键信息的一部分,无法修改”

这是我的一些尝试:

 orgRecord.ID = copyRecord.ID

 ctx.Entry(orgRecord).CurrentValues.SetValues(copyRecord);
 ctx.Entry(orgRecord).State = EntityState.Modified;
 ctx.Entry(orgRecord).Property(x => x.ID).IsModified = false;

要复制所有属性,但保持主键不变,我需要做什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试以下操作:用copyRecord获取AsNoTracking(),然后将ID设置为原始值,然后附加到上下文,将State设置为Modified并保存。