首页 > 解决方案 > 实体框架 6 - 通过复制另一个数据库记录来更新数据库记录

问题描述

我刚开始使用 Asp.NET MVC & EF,我猜想必须有一个简单的解决方案来解决我正在尝试做的事情。

我想做的事:

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

在我的 Post Controller 操作中,我传递了原始记录的 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;

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

谢谢你。

标签: asp.net-mvcentity-frameworkmodel-view-controllerasp.net-mvc-5entity-framework-6

解决方案


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


推荐阅读