Table<TEntity>.Attach Metoda

Definicja

Dołącza jednostkę do DataContext.Attaches an entity to the DataContext.

Przeciążenia

Attach(TEntity)

Dołącza jednostkę rozłączoną lub "odłączono" do nowej DataContext, gdy oryginalne wartości są wymagane do optymistycznych kontroli współbieżności.Attaches a disconnected or "detached" entity to a new DataContext when original values are required for optimistic concurrency checks.

Attach(TEntity, Boolean)

Dołącza jednostkę do DataContext w zmodyfikowanym lub niezmodyfikowanym stanie.Attaches an entity to the DataContext in either a modified or unmodified state.

Attach(TEntity, TEntity)

Dołącza jednostkę do DataContext w zmodyfikowanym lub niezmodyfikowanym stanie przez określenie zarówno jednostki, jak i jej oryginalnego stanu.Attaches an entity to the DataContext in either a modified or unmodified state by specifying both the entity and its original state.

Uwagi

Użyj metod Attach z jednostkami, które zostały utworzone w jednym DataContext, serializować do klienta, a następnie zdeserializować z powrotem (z zamiarem wykonania operacji aktualizowania lub usuwania).Use the Attach methods with entities that have been created in one DataContext, serialized to a client, and then deserialized back (with the intention to perform an update or delete operation). Aby uzyskać więcej informacji, zobacz operacje pobierania i cud danych w aplikacjach N-warstwowych (LINQ to SQL).For more information, see Data Retrieval and CUD Operations in N-Tier Applications (LINQ to SQL).

Nie należy próbować Attach jednostki, która nie została odłączona przy użyciu serializacji.Do not try to Attach an entity that has not been detached through serialization. Jednostki, które nie zostały serializowane, nadal utrzymują skojarzenia z odroczonymi ładowarkami, które mogą spowodować nieoczekiwane wyniki, jeśli jednostka stanie się śledzona przez drugi kontekst danych.Entities that have not been serialized still maintain associations with deferred loaders that can cause unexpected results if the entity becomes tracked by a second data context.

Po dołączeniu nowej jednostki są inicjowane odroczone ładowarki dla każdej kolekcji podrzędnej (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel).When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Gdy SubmitChanges jest wywoływana, elementy członkowskie kolekcji podrzędnych są umieszczane w stanie Unmodified.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić tę jednostkę.To update members of a child collection, you must explicitly call Attach and specify that entity.

Attach dołącza wszystkie jednostki na grafie obiektów podanego obiektu.Attach attaches all entities in the object graph of the provided object. Na przykład:For example:

using (var db = new SampleDataContext())
{  
    var employee = new Employee { employeeId = 1 };  
  
    var master = new Master();  
    master.Employee = employee;  
  
    var child = new Child();  
    child.Employee = employee;  
  
    db.Employees.Attach(employee);  
  
    master.Child = child;  
  
    db.Masters.InsertOnSubmit(master);  
  
    db.SubmitChanges();  
} 
Using db As New SampleDataContext()
    Dim employee As New Employee With { .employeeId = 1 }
  
    Dim master As New Master()  
    master.Employee = employee  
  
    Dim child As New Child()  
    child.Employee = employee  
  
    db.Employees.Attach(employee)  
  
    master.Child = child  
  
    db.Masters.InsertOnSubmit(master)  
  
    db.SubmitChanges()  
  
End Using  

Wywołanie Attach na Employee dołącza pracownika, wzorzec i element podrzędny, ponieważ Employee zawiera relacje z elementami głównymi i podrzędnymi.Calling Attach on Employee attaches employee, master, and child, because the Employee has relationships to both master and child. Musisz jawnie wywołać InsertOnSubmit, aby zmienić stan z dołączone do wstawienia.You must explicitly call InsertOnSubmit to change the state from attached to inserted.

Attach(TEntity)

Dołącza jednostkę rozłączoną lub "odłączono" do nowej DataContext, gdy oryginalne wartości są wymagane do optymistycznych kontroli współbieżności.Attaches a disconnected or "detached" entity to a new DataContext when original values are required for optimistic concurrency checks.

public:
 void Attach(TEntity entity);
public:
 virtual void Attach(TEntity entity);
public void Attach (TEntity entity);
member this.Attach : 'Entity -> unit
abstract member Attach : 'Entity -> unit
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)

Parametry

entity
TEntity

Oryginalne wartości jednostki, która ma zostać dołączona.The original values of the entity to be attached.

Implementuje

Uwagi

Użyj metod Attach z jednostkami, które zostały utworzone w jednym DataContext, serializować do klienta, a następnie zdeserializować z powrotem do wykonania operacji Update lub DELETE.Use the Attach methods with entities that have been created in one DataContext, serialized to a client, and then deserialized back to perform an update or delete operation. Ponieważ nowy DataContext nie ma możliwości śledzenia wartości oryginalnych dla rozłączonej jednostki, klient jest odpowiedzialny za dostarczanie tych wartości.Because the new DataContext has no way of tracking what the original values were for a disconnected entity, the client is responsible for supplying those values. W tej wersji Attachjednostka jest założono, że jest w stanie pierwotnej wartości.In this version of Attach, the entity is assumed to be in its original value state. Po wywołaniu tej metody można zaktualizować jej pola, na przykład dodatkowe dane wysyłane z klienta.After calling this method, you can then update its fields, for example with additional data sent from the client.

Po dołączeniu nowej jednostki są inicjowane odroczone ładowarki dla każdej kolekcji podrzędnej (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel).When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Gdy SubmitChanges jest wywoływana, elementy członkowskie kolekcji podrzędnych są umieszczane w stanie Unmodified.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić tę jednostkę.To update members of a child collection, you must explicitly call Attach and specify that entity.

Aby uzyskać więcej informacji, zobacz operacje pobierania i cud danych w aplikacjach N-warstwowych (LINQ to SQL).For more information, see Data Retrieval and CUD Operations in N-Tier Applications (LINQ to SQL).

Nie należy próbować Attach jednostki, która nie została odłączona przy użyciu serializacji.Do not try to Attach an entity that has not been detached through serialization. Jednostki, które nie zostały serializowane, nadal utrzymują skojarzenia z odroczonymi ładowarkami, które mogą spowodować nieoczekiwane wyniki, jeśli jednostka stanie się śledzona przez drugi kontekst danych.Entities that have not been serialized still maintain associations with deferred loaders that can cause unexpected results if the entity becomes tracked by a second data context.

Attach(TEntity, Boolean)

Dołącza jednostkę do DataContext w zmodyfikowanym lub niezmodyfikowanym stanie.Attaches an entity to the DataContext in either a modified or unmodified state.

public:
 void Attach(TEntity entity, bool asModified);
public void Attach (TEntity entity, bool asModified);
member this.Attach : 'Entity * bool -> unit
Public Sub Attach (entity As TEntity, asModified As Boolean)

Parametry

entity
TEntity

Jednostka, która ma zostać dołączona.The entity to be attached.

asModified
Boolean

true dołączyć jednostkę jako zmodyfikowaną; false dołączyć jednostki jako niezmodyfikowane.true to attach the entity as modified; false to attach the entity as unmodified.

Uwagi

Jeśli dołączysz jako zmodyfikowany, jednostka musi albo zadeklarować składową wersji lub nie może uczestniczyć w sprawdzaniu konfliktów aktualizacji.If attaching as modified, the entity must either declare a version member or must not participate in update conflict checking. Po dołączeniu nowej jednostki są inicjowane odroczone ładowarki dla każdej kolekcji podrzędnej (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel).When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Gdy SubmitChanges jest wywoływana, elementy członkowskie kolekcji podrzędnych są umieszczane w stanie Unmodified.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić tę jednostkę.To update members of a child collection, you must explicitly call Attach and specify that entity.

Attach(TEntity, TEntity)

Dołącza jednostkę do DataContext w zmodyfikowanym lub niezmodyfikowanym stanie przez określenie zarówno jednostki, jak i jej oryginalnego stanu.Attaches an entity to the DataContext in either a modified or unmodified state by specifying both the entity and its original state.

public:
 void Attach(TEntity entity, TEntity original);
public void Attach (TEntity entity, TEntity original);
member this.Attach : 'Entity * 'Entity -> unit
Public Sub Attach (entity As TEntity, original As TEntity)

Parametry

entity
TEntity

Jednostka, która ma zostać dołączona.The entity to be attached.

original
TEntity

Wystąpienie tego samego typu jednostki z elementami członkowskimi danych, które zawierają oryginalne wartości.An instance of the same entity type with data members that contain the original values.

Przykłady

      using (Northwnd db2 = new Northwnd(@"c:\northwnd.mdf"))
      {
          Customer Cust_File = new Customer();
          string xmlFile = "";
          
          // Get the original object from the deserializer.
          Customer c = SerializeHelper.Deserialize<Customer>
              (xmlFile, Cust_File);

          // Set all the desired properties to the entity to be attached.
          Customer c_updated = new Customer() { CustomerID = c.CustomerID,
              Phone = "425-123-4567", CompanyName = "Microsoft" };
          db2.Customers.Attach(c_updated, c);

          // Perform last minute updates, which will still take effect. 
          c_updated.Phone = "425-765-4321";

          // SubmitChanges()sets the phoneNumber and CompanyName of
          // customer with customerID=Cust. to "425-765-4321" and
          // "Microsoft" respectively.
          db2.SubmitChanges();  
      }
Using db = New Northwnd("...")
    Dim Cust_File As New Customer()
    Dim xmlFile As String = ""

    'Get the original object from the deserializer.
    Dim c As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFile, Cust_File)

    ' Set all the desired properties to the entity to be attached.
    Dim c_updated As New Customer With {.CustomerID = c.CustomerID, _
    .Phone = "425-123-4567", .CompanyName = "Microsoft"}
    db.Customers.Attach(c_updated, c)

    ' Perform last minute updates, which will still take effect. 
    c_updated.Phone = "425-765-4321"

    ' SubmitChanges()sets the phoneNumber and CompanyName of
    ' customer with customerID=Cust. to "425-765-4321" and
    ' "Microsoft" respectively.
    db.SubmitChanges()
End Using

Uwagi

W poniższym przykładzie obiekt Customer jest już prawidłowo skonfigurowany.In the following example, the Customer object is already correctly configured. Możesz wywoływać Attach bez konieczności powtarzania aktualizacji.You can call Attach without having to replay the updates.

Po dołączeniu nowej jednostki są inicjowane odroczone ładowarki dla każdej kolekcji podrzędnej (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel).When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Gdy SubmitChanges jest wywoływana, elementy członkowskie kolekcji podrzędnych są umieszczane w stanie Unmodified.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić tę jednostkę.To update members of a child collection, you must explicitly call Attach and specify that entity.

Dotyczy