LINQ to Entities," ObjectStateManager中已存在具有相同密钥的对象..."

时间:2012-03-26 15:59:41

标签: linq-to-entities

我有一个表,主键是3列的组合 1. AcctNum(字符串) 2. SrvID(int) 3. RevNum(int)

我在代码中所做的是

  1. 我得到了具有最大RevNum的特定AcctNum的行,然后是我 修改该行的某些列(除了键之外)。
  2. 然后我创建一个新行(实体/表类型的新对象)
  3. 我使用AutoMapper将上面步骤1中行的所有值映射到我在上面的步骤2中创建的新行。然后我修改RevNum将其增加1,为这个新行创建一个唯一的主键。
  4. 当我做context.TableName.AddObject(newRow) 它引发了一个例外 “ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象。”

    即使在新行中,我正在更改RevNum以获得唯一键。有人可以告诉我这里我做错了吗?

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题。问题是使用AutoMapper从现有实体实例(映射表行)映射到新实体实例(正在创建新表行)。

我停止使用AutoMapper并逐个手动映射每个属性,它运行得很好!

另一篇有类似问题的帖子: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key