EntityCollection<TEntity>.Attach Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет связь между двумя присоединенными объектами в контексте объекта.
Перегрузки
Attach(IEnumerable<TEntity>) |
Определяет связи между объектом и коллекцией связанных объектов в контексте объекта. |
Attach(TEntity) |
Определяет связь между двумя присоединенными объектами в контексте объекта. |
Attach(IEnumerable<TEntity>)
Определяет связи между объектом и коллекцией связанных объектов в контексте объекта.
public:
void Attach(System::Collections::Generic::IEnumerable<TEntity> ^ entities);
public void Attach (System.Collections.Generic.IEnumerable<TEntity> entities);
override this.Attach : seq<'Entity (requires 'Entity : null and 'Entity :> System.Data.Objects.DataClasses.IEntityWithRelationships)> -> unit
override this.Attach : seq<'Entity (requires 'Entity : null)> -> unit
Public Sub Attach (entities As IEnumerable(Of TEntity))
Параметры
- entities
- IEnumerable<TEntity>
Коллекция объектов в контексте объекта, которые связаны с исходным объектом.
Исключения
Коллекция entities
равна null
.
Исходный объект или объект в коллекции entities
имеет значение null
либо не находится в состоянии Unchanged или Modified.
-или-
Не удается определить связь на основании метаданных модели EDM. Это может происходить, если ассоциация в концептуальной схеме не поддерживает наличие связи между двумя типами.
Комментарии
Метод Attach используется, чтобы определить связи между объектом и коллекцией связанных объектов, если и исходный объект, и коллекция связанных объектов уже существуют в контексте объекта. Чтобы присоединить объект или граф объектов, где уже определены связи, вызовите метод Attach в контексте ObjectContext. Чтобы создать новый объект, связанный с исходным объектом, вызовите метод Add для коллекции EntityCollection<TEntity>. Дополнительные сведения см. в разделе Присоединение и отсоединение объектов.
Если коллекция уже заполнена целиком или частично, метод Attach выполнит слияние существующих сущностей с заданными. Предполагается, что заданные сущности не образуют полный набор связанных сущностей.
Все передаваемые сущности должны находиться в состоянии Unchanged или Modified. Объекты в состоянии Deleted допускаются только в случае, когда диспетчер состояний уже отслеживает данный экземпляр связи.
Применяется к
Attach(TEntity)
Определяет связь между двумя присоединенными объектами в контексте объекта.
public:
void Attach(TEntity entity);
public void Attach (TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
Параметры
- entity
- TEntity
Присоединяемый объект.
Исключения
Когда entity
имеет значение null
.
Если объект entity
не может быть связан с исходным объектом. Это может происходить, если ассоциация в концептуальной схеме не поддерживает наличие связи между двумя типами.
-или-
Если объект имеет значение null
либо не находится в состоянии Unchanged или Modified.
Примеры
Этот пример основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните процедуры, описанные в разделах Практическое руководство. Настройка проекта Entity Framework вручную и Практическое руководство. Определение модели и файлов сопоставления вручную.
В этом примере коллекция отсоединенных объектов SalesOrderDetail
и отсоединенный объект SalesOrderHeader
присоединяются к контексту объекта, а затем определяются связи между объектом SalesOrderHeader
и каждым из объектов SalesOrderDetail
.
private static void AttachRelatedObjects(
ObjectContext currentContext,
SalesOrderHeader detachedOrder,
List<SalesOrderDetail> detachedItems)
{
// Attach the root detachedOrder object to the supplied context.
currentContext.Attach(detachedOrder);
// Attach each detachedItem to the context, and define each relationship
// by attaching the attached SalesOrderDetail object to the EntityCollection on
// the SalesOrderDetail navigation property of the now attached detachedOrder.
foreach (SalesOrderDetail item in detachedItems)
{
currentContext.Attach(item);
detachedOrder.SalesOrderDetails.Attach(item);
}
}
Комментарии
Метод Attach используется, чтобы определить связи между двумя объектами, если оба объекта уже существуют в контексте объекта. Чтобы присоединить объект или граф объектов, где уже определены связи, вызовите метод Attach в контексте ObjectContext. Чтобы создать новый объект, связанный с исходным объектом, вызовите метод Add для коллекции EntityCollection<TEntity>. Дополнительные сведения см. в разделе Присоединение и отсоединение объектов.
Если в коллекцию EntityCollection<TEntity> уже загружены объекты, метод Attach выполняет слияние нового объекта с объектами, существующими в EntityCollection<TEntity>.
Предполагается, что присоединяемый объект не представляет полный набор связанных сущностей.
Объект, связанный с этой ссылкой EntityCollection<TEntity>, и все присоединенные к нему объекты должны находиться в состоянии Unchanged или Modified.
Объект в состоянии Deleted можно присоединять только в случае, если ObjectStateManager уже отслеживает экземпляр связи.