我在试图理解为什么我的代码崩溃(我开始工作)时遇到了一些困难。
当您同时查看原始方法和工作方法时,一行的位置是不同的
ctx.Inventories.Attach(this);
当原始方法不起作用但第二种方法起作用时,我感到很困惑。谁能提供一些见解?
这是我得到的例外。
System.InvalidOperationException : ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
这是我原来的方法
public void RemoveDependency(int depId)
{
bool returnValue = false;
if (this.Id != 0 && depId > 0)
{
using (ApsEntities ctx = new ApsEntities())
{
var query2 = from d in ctx.Dependencies
where d.Id == depId
select d;
Dependency found = query2.FirstOrDefault();
if (found != null)
{
**ctx.Inventories.Attach(this);**
ctx.ObjectStateManager.ChangeObjectState(this, EntityState.Modified);
this.Dependencies.Remove(found);
ctx.SaveChanges();
}
}
}
return returnValue;
}
这是我的工作方法
public void RemoveDependency(int depId)
{
bool returnValue = false;
if (this.Id != 0 && depId > 0)
{
using (ApsEntities ctx = new ApsEntities())
{
**ctx.Inventories.Attach(this);**
var query2 = from d in ctx.Dependencies
where d.Id == depId
select d;
Dependency found = query2.FirstOrDefault();
if (found != null)
{
ctx.ObjectStateManager.ChangeObjectState(this, EntityState.Modified);
this.Dependencies.Remove(found);
ctx.SaveChanges();
}
}
}
return returnValue;
}