无法跟踪实体类型“***”的实例,因为已经在跟踪另一个与{“ID”}具有相同键值的实例。

Posted #青鸟爱吃鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法跟踪实体类型“***”的实例,因为已经在跟踪另一个与{“ID”}具有相同键值的实例。相关的知识,希望对你有一定的参考价值。

一顿操作猛如虎,然后他给我来个这个

The instance of entity type ‘***‘ cannot be tracked because another instance with the same key value for {‘ID‘} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using ‘***’ to see the conflicting key values.

 

ennnnnn MMP

这玩意百度翻译说 是 

无法跟踪实体类型“***”的实例,因为已经在跟踪另一个与{“ID”}具有相同键值的实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用“***”查看冲突的键值。

 

然而看这个翻译简单来说是键值冲突  what fuck????(语言不当之处请见谅,我只是想描绘一下我现在的心情)

 

首先我是把数据根据ID查出来的,然后需要修改一个字段值,最后保存。

这个操作我在controllers 做的,还用了Map映射。目前为止我怀疑是映射的问题。

  在查出来ID时我将数据库的Model映射为他对应的ViewModel 这时候映射了一次,得到的是View 的数据。接着我修改完字段,需要保存修改需要将ViewModel 映射 为 Model,这时候就发生了他说的

已经在跟踪另一个与{“ID”}具有相同键值的实例 的问题。

解决方法:

  不用映射,直接用数据上下文查,直接改,没发生任何问题。NICE

 

本文原创,转载请注明出处。

 

附言:

  愿这世上没有bug

 

 

Map

以上是关于无法跟踪实体类型“***”的实例,因为已经在跟踪另一个与{“ID”}具有相同键值的实例。的主要内容,如果未能解决你的问题,请参考以下文章

无法跟踪实体类型的实例,因为已在跟踪具有相同键值的另一个实例

Asp.net core System.InvalidOperationException:无法跟踪实体类型x的实例

递归 linq 表达式以获取非 NULL 父值?

EntityFramework 更新实体失败 - 无法跟踪

EF Core性能优化

在 asp.net core 中插入/更新记录时出错