我有一个存储库模型方法: -
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的对象?任何人都可以就发生的事情提出建议吗?