Самообследуемый объект Удалить дочерний объект - PullRequest
0 голосов
/ 23 июня 2011

Как правильно удалить элемент коллекции из STE.В настоящее время я использую следующий код:

order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);

Похоже, это работает (и ApplyChanges удаляет сущность, несмотря на то, что я удалил ее из коллекции).Но это выглядит немного некрасиво.Я правильно это делаю?Или может быть есть другие способы?

1 Ответ

1 голос
/ 23 июня 2011

Этот текст взят непосредственно из 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, поэтому удаление элемента по индексу, скорее всего, удалит связь разрыва с другим.

...