Compartir a través de


Table<TEntity>.Attach Método

Definición

Adjunta una entidad a DataContext.

Sobrecargas

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.

Attach(TEntity, Boolean)

Adjunta una entidad a DataContext en un estado modificado o no modificado.

Attach(TEntity, TEntity)

Adjunta una entidad a DataContext en un estado modificado o no modificado especificando la entidad y su estado original.

Comentarios

Use los Attach métodos con entidades que se han creado en un DataContext, serializado en un cliente y, a continuación, deserializado de nuevo (con la intención de realizar una operación de actualización o eliminación). Para obtener más información, consulta Recuperación de datos y operaciones CUD en aplicaciones de N niveles (LINQ to SQL).

No intente una Attach entidad que no se haya desasociado mediante la serialización. Las entidades que no se han serializado siguen manteniendo asociaciones con cargadores diferidos que pueden provocar resultados inesperados si un segundo contexto de datos realiza un seguimiento de la entidad.

Cuando se adjunta una nueva entidad, se inicializan los cargadores diferidos de las colecciones secundarias (por ejemplo, EntitySet las colecciones de entidades de las tablas asociadas). Cuando SubmitChanges se llama a , los miembros de las colecciones secundarias se colocan en un Unmodified estado . Para actualizar los miembros de una colección secundaria, debe llamar Attach explícitamente a esa entidad y especificarla.

Attach asocia todas las entidades del gráfico de objetos del objeto proporcionado. Por ejemplo:

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  

Al llamar Attach a on Employee attaches employee, master, and child, because the Employee has relationships to both master and child. Debe llamar InsertOnSubmit explícitamente para cambiar el estado de adjunto a insertado.

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.

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)

Parámetros

entity
TEntity

Valores originales de la entidad que se va a asociar.

Implementaciones

Comentarios

Use los Attach métodos con entidades que se han creado en un DataContext, serializado en un cliente y, a continuación, deserializado de nuevo para realizar una operación de actualización o eliminación. Dado que el nuevo DataContext no tiene ninguna manera de realizar un seguimiento de los valores originales de una entidad desconectada, el cliente es responsable de proporcionar esos valores. En esta versión de Attach, se supone que la entidad está en su estado de valor original. Después de llamar a este método, puede actualizar sus campos, por ejemplo, con datos adicionales enviados desde el cliente.

Cuando se adjunta una nueva entidad, se inicializan los cargadores diferidos de las colecciones secundarias (por ejemplo, EntitySet las colecciones de entidades de las tablas asociadas). Cuando SubmitChanges se llama a , los miembros de las colecciones secundarias se colocan en un Unmodified estado . Para actualizar los miembros de una colección secundaria, debe llamar Attach explícitamente a esa entidad y especificarla.

Para obtener más información, consulta Recuperación de datos y operaciones CUD en aplicaciones de N niveles (LINQ to SQL).

No intente una Attach entidad que no se haya desasociado mediante la serialización. Las entidades que no se han serializado siguen manteniendo asociaciones con cargadores diferidos que pueden provocar resultados inesperados si un segundo contexto de datos realiza un seguimiento de la entidad.

Se aplica a

Attach(TEntity, Boolean)

Adjunta una entidad a DataContext en un estado modificado o no modificado.

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

Entidad que se va a asociar.

asModified
Boolean

true para adjuntar la entidad como modificada; false para adjuntar la entidad como sin modificar.

Comentarios

Si se adjunta como modificado, la entidad debe declarar un miembro de versión o no debe participar en la comprobación de conflictos de actualización. Cuando se adjunta una nueva entidad, se inicializan los cargadores diferidos de las colecciones secundarias (por ejemplo, EntitySet las colecciones de entidades de las tablas asociadas). Cuando SubmitChanges se llama a , los miembros de las colecciones secundarias se colocan en un Unmodified estado . Para actualizar los miembros de una colección secundaria, debe llamar Attach explícitamente a esa entidad y especificarla.

Se aplica a

Attach(TEntity, TEntity)

Adjunta una entidad a DataContext en un estado modificado o no modificado especificando la entidad y su estado original.

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

Entidad que se va a asociar.

original
TEntity

Instancia del mismo tipo de entidad con miembros de datos que contienen los valores originales.

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, el Customer objeto ya está configurado correctamente. Puede llamar Attach a sin tener que reproducir las actualizaciones.

Cuando se adjunta una nueva entidad, se inicializan los cargadores diferidos de las colecciones secundarias (por ejemplo, EntitySet las colecciones de entidades de las tablas asociadas). Cuando SubmitChanges se llama a , los miembros de las colecciones secundarias se colocan en un Unmodified estado . Para actualizar los miembros de una colección secundaria, debe llamar Attach explícitamente a esa entidad y especificarla.

Se aplica a