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