EntityCollection<TEntity>.Attach Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje relację między dwoma dołączonymi obiektami w kontekście obiektu.
Przeciążenia
| Attach(IEnumerable<TEntity>) |
Definiuje relacje między obiektem a kolekcją powiązanych obiektów w kontekście obiektu. |
| Attach(TEntity) |
Definiuje relację między dwoma dołączonymi obiektami w kontekście obiektu. |
Attach(IEnumerable<TEntity>)
Definiuje relacje między obiektem a kolekcją powiązanych obiektów w kontekście obiektu.
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))
Parametry
- entities
- IEnumerable<TEntity>
Kolekcja obiektów w kontekście obiektu, które są powiązane z obiektem źródłowym.
Wyjątki
entities kolekcja to null.
Obiekt źródłowy lub obiekt w entities kolekcji jest null lub nie znajduje się w Unchanged stanie lub Modified .
-lub-
Nie można zdefiniować relacji na podstawie metadanych modelu EDM firmy Adventure Works . Taka sytuacja może wystąpić, gdy skojarzenie w schemacie koncepcyjnym nie obsługuje relacji między dwoma typami.
Uwagi
Metoda Attach służy do definiowania relacji między obiektem a kolekcją powiązanych obiektów, gdy zarówno obiekt źródłowy, jak i kolekcja powiązanych obiektów już istnieją w kontekście obiektu. Aby dołączyć obiekt lub graf obiektu, w którym relacje są już zdefiniowane, wywołaj metodę Attach w ObjectContextobiekcie . Aby utworzyć nowy obiekt powiązany z obiektem źródłowym, wywołaj metodę Add w EntityCollection<TEntity>obiekcie . Aby uzyskać więcej informacji, zobacz Dołączanie i odłączanie obiektów.
Jeśli kolekcja jest już wypełniona lub częściowo wypełniona, Attach metoda scala istniejące jednostki z daną jednostką. Nie zakłada się, że podane jednostki są kompletnym zestawem powiązanych jednostek.
Wszystkie przekazane jednostki muszą być w Unchanged stanie lub Modified . Obiekty w Deleted stanie są dozwolone tylko wtedy, gdy menedżer stanu śledzi już wystąpienie relacji.
Dotyczy
Attach(TEntity)
Definiuje relację między dwoma dołączonymi obiektami w kontekście obiektu.
public:
void Attach(TEntity entity);
public void Attach (TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
Parametry
- entity
- TEntity
Dołączany obiekt.
Wyjątki
Gdy wartość to entity null.
entity Gdy obiekt źródłowy nie może być powiązany. Taka sytuacja może wystąpić, gdy skojarzenie w schemacie koncepcyjnym nie obsługuje relacji między dwoma typami.
-lub-
Jeśli obiekt jest null lub nie znajduje się w Unchanged stanie lub Modified .
Przykłady
Ten przykład jest oparty na modelu Adventure Works Sales Model. Aby uruchomić kod w tym przykładzie, musisz już dodać model AdventureWorks Sales Do projektu i skonfigurować projekt do korzystania z programu Entity Framework. Aby to zrobić, wykonaj procedury opisane w temacie Instrukcje: Ręczne konfigurowanie Project programu Entity Framework i Instrukcje: Ręczne definiowanie modelu i plików mapowania.
W tym przykładzie dołączana jest kolekcja odłączonych SalesOrderDetail obiektów i odłączony SalesOrderHeader obiekt do kontekstu obiektu, a następnie definiuje relacje między SalesOrderHeader obiektem a każdym SalesOrderDetail obiektem.
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);
}
}
Private Shared Sub AttachRelatedObjects(ByVal currentContext As ObjectContext, ByVal detachedOrder As SalesOrderHeader, ByVal detachedItems As List(Of SalesOrderDetail))
' 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.
For Each item As SalesOrderDetail In detachedItems
currentContext.Attach(item)
detachedOrder.SalesOrderDetails.Attach(item)
Next
End Sub
Uwagi
Metoda Attach służy do definiowania relacji między dwoma obiektami, gdy oba obiekty już istnieją w kontekście obiektu. Aby dołączyć obiekt lub graf obiektu, w którym relacje są już zdefiniowane, wywołaj metodę Attach w ObjectContextobiekcie . Aby utworzyć nowy obiekt powiązany z obiektem źródłowym, wywołaj metodę Add w EntityCollection<TEntity>obiekcie . Aby uzyskać więcej informacji, zobacz Dołączanie i odłączanie obiektów.
EntityCollection<TEntity> Jeśli obiekt został już załadowany, Attach metoda scala obiekt wraz z istniejącymi obiektami w obiekcie EntityCollection<TEntity>.
Nie zakłada się, że dołączony obiekt jest kompletnym zestawem powiązanych obiektów jednostki.
Obiekt skojarzony z tym EntityCollection<TEntity> obiektem i wszystkimi obiektami dołączonymi do niego musi być w Unchanged stanie lub Modified .
Obiekty w Deleted stanie mogą być dołączone tylko wtedy, gdy ObjectStateManager obiekt już śledzi wystąpienie relacji.