0

我有一个存储库模型方法:-

public void InsertOrUpdateServer(TMSServer server, string username,long assetid)
{
  var resource = GetResourceDetials(assetid);
  if (server.ServerID == default(int))
  {
    //code goes here>>>>>>>>.......>>>
  }
  else
  {
    // Existing entity
    var auditinfo = IntiateAudit(
                      tms.AuditActions.SingleOrDefault(
                        a => a.Name.ToUpper() == "EDIT").ActionID,
                          tms.TechnologyTypes.SingleOrDefault(
                            a => a.Name.ToUpper() == "Server").AssetTypeID,
                              username, server.ServerID
                     );

    server.IT360SiteID = resource.SITEID.Value;
    tms.Entry(server).State = EntityState.Modified; // this will raise the esception         
    InsertOrUpdateAudit(auditinfo);
  }
}

但是当这个方法被调用时,我会得到以下异常:-

tms.Entry(server).State = EntityState.Modified;

ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。

源错误:第 1046 行:用户名,server.ServerID);第 1047 行:server.IT360SiteID = resource.SITEID.Value;///// 第 1048 行:
tms.Entry(server).State = EntityState.Modified; 第 1049 行:
// tms.Entry(technologyIP).State = EntityState.Modified; 第 1050 行:
InsertOrUpdateAudit(auditinfo);

所以我不知道是什么导致了这个问题,因为我只跟踪一个名为 servev 的对象?任何人都可以就发生的事情提出建议吗?

4

0 回答 0