0
什麼是從STE中刪除收集元素的正確方法。目前我使用下面的代碼:自我跟蹤實體移除子實體
order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);
看起來像它的工作原理(和ApplyChanges儘管我已經從集合中刪除它刪除實體)。但它看起來有點難看。我確實是嗎?或者可能有其他方法?
什麼是從STE中刪除收集元素的正確方法。目前我使用下面的代碼:自我跟蹤實體移除子實體
order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);
看起來像它的工作原理(和ApplyChanges儘管我已經從集合中刪除它刪除實體)。但它看起來有點難看。我確實是嗎?或者可能有其他方法?
本文直接取自MSDN:
的MarkAsDeleted方法改變了實體到已刪除的 狀態。此 方法還會清除標記爲刪除的 實體上的導航 屬性。導航 屬性設置爲空,如果它是指向參考對象的 。如果 導航屬性表示 集合,則會調用 清除方法。當MarkAsDeleted被 集合中的一個對象調用時,對象將從 集合中刪除。要將 中的每個對象標記爲已刪除的集合,請在該集合的副本中標記 對象。 獲取集合, 調用ToArray的()或ToList()方法 副本的集合,如下面的 例如:
List<Course> courses = department.Courses.ToList();
foreach (var c in courses)
{
// Mark each course in the department as Deleted.
c.MarkAsDeleted();
}
那麼,你是不是做錯了,因爲一旦您將項目標記爲已刪除,它應該已經從Items
集合中刪除,因此刪除索引處的項目很可能會刪除與另一個項目的中斷關係。