我刚开始使用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;
要复制所有属性,但保持主键不变,我需要做什么?
谢谢。
答案 0 :(得分:0)
尝试以下操作:用copyRecord
获取AsNoTracking()
,然后将ID设置为原始值,然后附加到上下文,将State设置为Modified并保存。