This text is taken directly from MSDN:
The MarkAsDeleted method changes the
state of the entity to Deleted. This
method also clears the navigation
properties on the entity that is being
marked for deletion. The navigation
property is set to null if it is
pointing to a reference object. The
Clear method is called if the
navigation property represents a
collection. When MarkAsDeleted is
called on an object that is part of a
collection, the object is removed from
the collection. To mark each object in
a collection as deleted, mark the
objects in a copy of the collection.
To get the copy of the collection,
call the ToArray() or ToList() method
on the collection, as in the following
example:
List<Course> courses = department.Courses.ToList();
foreach (var c in courses)
{
// Mark each course in the department as Deleted.
c.MarkAsDeleted();
}
So you are not doing it wrong because once you mark item as deleted it should be already removed from the Items
collection so removing item at index will most probably remove break relation with another one.