當我有一個例外,我不知道究竟是什麼錯誤或什麼是我應該做的正確刪除對象無一例外所以這是我有問題的功能:刪除實體框架對象
protected void RemoveAddDrugSurg()
{
Surgery sur;
DrugsList drug;
Surgery surObject;
DrugsList drugObject;
try
{
if (Session["OldSurgs"] != null)
{
var SurgList = Session["OldSurgs"] as List<Surgery>;
if (SurgList.Count > 0)
{
foreach (ListItem li in chlSurg.Items)
{
surObject = null;
Int64 index = Convert.ToInt64(li.Value);
surObject = SurgList.Find(s => s.SurgeryID == index);
if (surObject == null && li.Selected)
{
sur = new Surgery();
sur.VisitID = Convert.ToInt64(Session["VID"]);
sur.SurgeryID = Convert.ToInt32(li.Value);
Diabetes.AddToSurgeries(sur);
}
else if (surObject != null && !li.Selected)
{
Diabetes.CreateObjectSet<Surgery>().Attach(surObject);
Diabetes.ObjectStateManager.ChangeObjectState(surObject, EntityState.Deleted);
}
}
Diabetes.SaveChanges();
}
}
if (Session["OldDrugs"] != null)
{
var DrugList = Session["OldDrugs"] as List<DrugsList>;
if (DrugList.Count > 0)
{
foreach (ListItem li in chlDrugs.Items)
{
drugObject = null;
Int64 index = Convert.ToInt64(li.Value);
drugObject = DrugList.Find(d => d.DrugID == index);
if (drugObject == null && li.Selected)
{
drug = new DrugsList();
drug.VisitID = Convert.ToInt64(Session["VID"]);
drug.DrugID = Convert.ToInt32(li.Value);
Diabetes.AddToDrugsLists(drug);
}
else if (drugObject != null && !li.Selected)
{
Diabetes.CreateObjectSet<DrugsList>().Attach(drugObject);
Diabetes.ObjectStateManager.ChangeObjectState(drugObject, EntityState.Deleted);
}
}
Diabetes.SaveChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}
和出現的例外是:
IEntityChangeTracker的多個實例不能引用實體對象。
在此先感謝。
你檢查了你的app.config嗎? – test 2012-04-14 08:27:25
什麼?我用同樣的方式刪除其他對象,它運作良好,但現在我不知道該怎麼辦! – 2012-04-14 08:31:02
並且拋出異常的哪一行?如果它在.Attach()行上,那麼你緩存SurObject仍然/已經跟蹤 – 2012-04-14 08:32:56