Table<TEntity>.Attach Table<TEntity>.Attach Table<TEntity>.Attach Table<TEntity>.Attach Method

Definición

Adjunta una entidad a DataContext.Attaches an entity to the DataContext.

Sobrecargas

Attach(TEntity) Attach(TEntity) Attach(TEntity) Attach(TEntity)

Adjunta una entidad desconectada o "separada" a un nuevo objeto DataContext cuando se requieren los valores originales para las comprobaciones de simultaneidad optimista.Attaches a disconnected or "detached" entity to a new DataContext when original values are required for optimistic concurrency checks.

Attach(TEntity, Boolean) Attach(TEntity, Boolean) Attach(TEntity, Boolean) Attach(TEntity, Boolean)

Adjunta una entidad a DataContext en un estado modificado o no modificado.Attaches an entity to the DataContext in either a modified or unmodified state.

Attach(TEntity, TEntity) Attach(TEntity, TEntity) Attach(TEntity, TEntity) Attach(TEntity, TEntity)

Adjunta una entidad a DataContext en un estado modificado o no modificado especificando la entidad y su estado original.Attaches an entity to the DataContext in either a modified or unmodified state by specifying both the entity and its original state.

Comentarios

Use la Attach métodos con entidades que se han creado en uno DataContextserializado en un cliente y, a continuación, deserializar (con la intención de realizar una actualización o la operación de eliminación).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). Para obtener más información, consulte recuperación de datos y operaciones CUD en aplicaciones de N niveles (LINQ to SQL).For more information, see Data Retrieval and CUD Operations in N-Tier Applications (LINQ to SQL).

No intente Attach una entidad que no se ha desasociado mediante la serialización.Do not try to Attach an entity that has not been detached through serialization. Las entidades que no se han serializado mantienen asociaciones con cargadores diferidos que se pueden producir resultados inesperados si un segundo contexto de datos realiza un seguimiento de la entidad.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.

Cuando se adjunta una entidad nueva, aplaza los cargadores de las colecciones secundarias (por ejemplo, EntitySet colecciones de entidades de tablas asociadas) se inicializan.When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Cuando SubmitChanges se llama, los miembros del elemento secundario colecciones se colocan en un Unmodified estado.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Para actualizar los miembros de una colección secundaria, debe llamar explícitamente Attach y especificar esa entidad.To update members of a child collection, you must explicitly call Attach and specify that entity.

Attach asocia todas las entidades en el gráfico de objetos del objeto proporcionado.Attach attaches all entities in the object graph of the provided object. Por ejemplo, el siguiente código de C#:For example, the following C# code:

using (SampleDataContext db = new SampleDataContext()) {  
    Employee employee = new Employee { employeeId = 1 };  

    Master master = new Master();  
    master.Employee = employee;  

    Child child = new Child();  
    child.Employee = employee;  

    db.Employees.Attach(employee);  

    master.Child = child;  

    db.Masters.InsertOnSubmit(master);  

    db.SubmitChanges();  
}  

El código de Visual Basic equivalente es:The equivalent Visual Basic code is:

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  

Una llamada a Attach en Employee adjunta empleado, principal y secundario, porque el Employee tiene relaciones con la principal y secundario.Calling Attach on Employee attaches employee, master, and child, because the Employee has relationships to both master and child. Debe llamar explícitamente a InsertOnSubmit cambiar el estado de adjunto a insertado.You must explicitly call InsertOnSubmit to change the state from attached to inserted.

Attach(TEntity) Attach(TEntity) Attach(TEntity) Attach(TEntity)

Adjunta una entidad desconectada o "separada" a un nuevo objeto DataContext cuando se requieren los valores originales para las comprobaciones de simultaneidad optimista.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 void Attach (TEntity entity);
member this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)

Parámetros

entity
TEntity TEntity TEntity TEntity

Valores originales de la entidad que se va a asociar.The original values of the entity to be attached.

Comentarios

Use la Attach métodos con entidades que se han creado en uno DataContextserializado en un cliente y, a continuación, deserializar atrás para realizar una actualización o la operación de eliminación.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. Dado que el nuevo DataContext no tiene ninguna manera de seguimiento de cuáles fueron los valores originales de una entidad desconectada, el cliente es responsable de proporcionar esos valores.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. En esta versión de Attach, se supone que la entidad esté en su estado original del valor.In this version of Attach, the entity is assumed to be in its original value state. Después de llamar a este método, puede, a continuación, actualizar sus campos, por ejemplo con datos adicionales enviados desde el cliente.After calling this method, you can then update its fields, for example with additional data sent from the client.

Cuando se adjunta una entidad nueva, aplaza los cargadores de las colecciones secundarias (por ejemplo, EntitySet colecciones de entidades de tablas asociadas) se inicializan.When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Cuando SubmitChanges se llama, los miembros del elemento secundario colecciones se colocan en un Unmodified estado.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Para actualizar los miembros de una colección secundaria, debe llamar explícitamente Attach y especificar esa entidad.To update members of a child collection, you must explicitly call Attach and specify that entity.

Para obtener más información, consulte recuperación de datos y operaciones CUD en aplicaciones de N niveles (LINQ to SQL).For more information, see Data Retrieval and CUD Operations in N-Tier Applications (LINQ to SQL).

No intente Attach una entidad que no se ha desasociado mediante la serialización.Do not try to Attach an entity that has not been detached through serialization. Las entidades que no se han serializado mantienen asociaciones con cargadores diferidos que se pueden producir resultados inesperados si un segundo contexto de datos realiza un seguimiento de la entidad.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) Attach(TEntity, Boolean) Attach(TEntity, Boolean) Attach(TEntity, Boolean)

Adjunta una entidad a DataContext en un estado modificado o no modificado.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)

Parámetros

entity
TEntity TEntity TEntity TEntity

Entidad que se va a asociar.The entity to be attached.

asModified
Boolean Boolean Boolean Boolean

true para adjuntar la entidad como modificada; false para adjuntar la entidad como sin modificar.true to attach the entity as modified; false to attach the entity as unmodified.

Comentarios

Si se asocia como modificada, deberá declarar un miembro de la versión de la entidad o no debe participar en la comprobación de conflicto de actualización.If attaching as modified, the entity must either declare a version member or must not participate in update conflict checking. Cuando se adjunta una entidad nueva, aplaza los cargadores de las colecciones secundarias (por ejemplo, EntitySet colecciones de entidades de tablas asociadas) se inicializan.When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Cuando SubmitChanges se llama, los miembros del elemento secundario colecciones se colocan en un Unmodified estado.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Para actualizar los miembros de una colección secundaria, debe llamar explícitamente Attach y especificar esa entidad.To update members of a child collection, you must explicitly call Attach and specify that entity.

Attach(TEntity, TEntity) Attach(TEntity, TEntity) Attach(TEntity, TEntity) Attach(TEntity, TEntity)

Adjunta una entidad a DataContext en un estado modificado o no modificado especificando la entidad y su estado original.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)

Parámetros

entity
TEntity TEntity TEntity TEntity

Entidad que se va a asociar.The entity to be attached.

original
TEntity TEntity TEntity TEntity

Instancia del mismo tipo de entidad con miembros de datos que contienen los valores originales.An instance of the same entity type with data members that contain the original values.

Ejemplos

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

Comentarios

En el ejemplo siguiente, la Customer objeto ya está configurado correctamente.In the following example, the Customer object is already correctly configured. Puede llamar a Attach sin tener que volver a reproducir las actualizaciones.You can call Attach without having to replay the updates.

Cuando se adjunta una entidad nueva, aplaza los cargadores de las colecciones secundarias (por ejemplo, EntitySet colecciones de entidades de tablas asociadas) se inicializan.When a new entity is attached, deferred loaders for any child collections (for example, EntitySet collections of entities from associated tables) are initialized. Cuando SubmitChanges se llama, los miembros del elemento secundario colecciones se colocan en un Unmodified estado.When SubmitChanges is called, members of the child collections are put into an Unmodified state. Para actualizar los miembros de una colección secundaria, debe llamar explícitamente Attach y especificar esa entidad.To update members of a child collection, you must explicitly call Attach and specify that entity.

Se aplica a