Поделиться через


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 уже отслеживает экземпляр связи.

Применяется к