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已经在跟踪目标,你不需要修改它的状态。尝试删除该行。但我认为它不会在任何地方跟踪它。。