asp.net-mvc - 实体框架 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;
我需要做什么才能复制所有属性但保持主键不变?
谢谢你。
解决方案
尝试以下操作:获取copyRecord
with AsNoTracking()
,然后将 ID 设置为原始值,然后附加到上下文,将 State 设置为 Modified 并保存。
推荐阅读
- reactjs - 使用 setState 和 redux 操作时如何避免重复的 render() 调用
- java - 如何将我的测试结果从 selenium 发送到 testrail
- jquery - 如何在创建它的函数之外获取包含 unicode 的字符串变量的值?
- mysql - sql 除了like查询
- kotlin - 如何在 Kotlin 中导入类型扩展函数
- powershell - 如何将 Outlook Web 加载项安装到 Exchange Server 2013 中的通讯组?
- yarnpkg - 什么是“私人”标志纱线初始化?
- ruby-on-rails - 如何在 Rails 的索引页面中列出关联字段的所有实例
- ubuntu - systemd 服务文件执行命令失败:权限被拒绝
- python-3.x - 如何按检查对象对 QStandardItemModel 和 QListView 进行排序?