ObjectStateManage中已存在具有相同密钥的对象

时间:2013-08-09 12:59:00

标签: linq entity-framework

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

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的对象?任何人都可以就发生的事情提出建议吗?

0 个答案:

没有答案