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

Linq ObjectStateManager中已存在具有相同密钥的对象,linq,entity-framework,Linq,Entity Framework,我有一个存储库模型方法:- public void InsertOrUpdateServer(TMSServer server, string username,long assetid) { var resource = GetResourceDetials(assetid); if (server.ServerID == default(int)) { //code goes here>>>>>>>>.......>&

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

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的对象??有人能告诉你发生了什么吗?

如果tms已经在跟踪目标,你不需要修改它的状态。尝试删除该行。但我认为它不会在任何地方跟踪它。。