EntityCollection<TEntity>.Remove(TEntity) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет объект из коллекции и помечает связь к удалению.
public:
virtual bool Remove(TEntity entity);
public bool Remove (TEntity entity);
override this.Remove : 'Entity -> bool
Public Function Remove (entity As TEntity) As Boolean
Параметры
- entity
- TEntity
Объект, который должен быть удален из коллекции.
Возвращаемое значение
true
, если элемент был успешно удален; в противном случае — false
.
Реализации
Исключения
Объект entity
имеет значение null
.
Объект entity
не присоединен к тому же контексту объекта.
-или-
У объекта entity
нет допустимого диспетчера связей.
Примеры
Этот пример основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните процедуры, описанные в разделах Практическое руководство. Настройка проекта Entity Framework вручную и Практическое руководство. Определение модели и файлов сопоставления вручную.
В этом примере используется метод Remove для удаления одной сущности из коллекции, а затем вызывается метод Contains, чтобы определить, был ли объект удален из коллекции.
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
Contact contact = new Contact();
// Create a new SalesOrderHeader.
SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
// Add SalesOrderHeader to the Contact.
contact.SalesOrderHeaders.Add(newSalesOrder1);
// Create another SalesOrderHeader.
SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
// Add SalesOrderHeader to the Contact.
contact.SalesOrderHeaders.Add(newSalesOrder2);
// Get all related ends
IEnumerable<IRelatedEnd> relEnds =
((IEntityWithRelationships)contact)
.RelationshipManager.GetAllRelatedEnds();
foreach (IRelatedEnd relEnd in relEnds)
{
// Get Entity Collection from related end
EntityCollection<SalesOrderHeader> entityCollection =
(EntityCollection<SalesOrderHeader>)relEnd;
Console.WriteLine("EntityCollection count: {0}",
entityCollection.Count);
// Remove the first entity object.
entityCollection.Remove(newSalesOrder1);
bool contains = entityCollection.Contains(newSalesOrder1);
// Write the number of items after one entity has been removed
Console.WriteLine("EntityCollection count after one entity has been removed: {0}",
entityCollection.Count);
if (contains == false)
Console.WriteLine("The removed entity is not in in the collection any more.");
//Use IRelatedEnd to add the entity back.
relEnd.Add(newSalesOrder1);
Console.WriteLine("EntityCollection count after an entity has been added again: {0}",
entityCollection.Count);
}
}
Комментарии
Метод Remove также удаляет связь между исходным объектом и объектом, удаляемым из коллекции. Если связь содержит ограничение ссылочной целостности, при вызове метода Remove для зависимого объекта и этот объект, и связь будут помечены к удалению. Это происходит из-за того, что ограничение показывает, что зависимый объект не может существовать без связи с родительским объектом. Дополнительные сведения см. в разделе Элемент ReferentialConstraint (CSDL).
Remove возвращает значение false
, если указанный объект отсутствует в коллекции.