Этот текст взят непосредственно из MSDN :
Метод MarkAsDeleted изменяет
состояние сущности удалено. это
метод также очищает навигацию
свойства объекта, который
помечены для удаления. Навигация
свойство имеет значение null, если оно
указывая на эталонный объект.
Метод Clear вызывается, если
свойство навигации представляет
коллекция. Когда 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
, поэтому удаление элемента по индексу, скорее всего, удалит связь разрыва с другим.