Table<TEntity>.AttachAll Table<TEntity>.AttachAll Table<TEntity>.AttachAll Table<TEntity>.AttachAll Method

Definición

Asocia todas las entidades de una colección al objeto DataContext en un estado modificado o no modificado.Attaches all entities of a collection to the DataContext in either a modified or unmodified state.

Sobrecargas

AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Asocia todas las entidades de una colección al objeto DataContext en un estado modificado o no modificado.Attaches all entities of a collection to the DataContext in either a modified or unmodified state.

AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)

Asocia todas las entidades de una colección al objeto DataContext en un estado modificado o no modificado.Attaches all entities of a collection to the DataContext in either a modified or unmodified state.

Comentarios

Si se asocia como modificada, la entidad deberá declarar a un miembro de versión 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.

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).

AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>) AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Asocia todas las entidades de una colección al objeto DataContext en un estado modificado o no modificado.Attaches all entities of a collection to the DataContext in either a modified or unmodified state.

public:
generic <typename TSubEntity>
 where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities);
public void AttachAll<TSubEntity> (System.Collections.Generic.IEnumerable<TSubEntity> entities) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity))

Parámetros de tipo

TSubEntity

Tipo de entidades que van a asociarse.The type of entities to attach.

Parámetros

entities
IEnumerable<TSubEntity>

Colección de entidades.The collection of entities.

Comentarios

Este método asocia todas las entidades de una colección a un nuevo DataContext.This method attaches all entities of a collection to a new DataContext. 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).

AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)

Asocia todas las entidades de una colección al objeto DataContext en un estado modificado o no modificado.Attaches all entities of a collection to the DataContext in either a modified or unmodified state.

public:
generic <typename TSubEntity>
 where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities, bool asModified);
public void AttachAll<TSubEntity> (System.Collections.Generic.IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> * bool -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity), asModified As Boolean)

Parámetros de tipo

TSubEntity

Tipo de entidades que van a asociarse.The type of entities to attach.

Parámetros

entities
IEnumerable<TSubEntity>

Colección de entidades.The collection of entities.

asModified
Boolean Boolean Boolean Boolean

Es true si el objeto tiene una marca de tiempo o un miembro RowVersion; es false si se usan los valores originales para la comprobación de simultaneidad optimista.true if the object has a timestamp or RowVersion member; false if original values are being used for the optimistic concurrency check.

Ejemplos

El ejemplo siguiente muestra cómo actualizar un Order objeto en otro DataContext instancia.The following example shows how you can update an Order object on a different DataContext instance. El ejemplo se supone que tiene una conexión a una base de datos y ha realizado un LINQ to SQLLINQ to SQL archivo para ella (en este caso, la base de datos de ejemplo Northwind).The example assumes that you have a connection to a database and have made a LINQ to SQLLINQ to SQL file for it (in this case, the Northwind sample database).

using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))
{
    // Get original Customer from deserialization.
    var q1 = db.Orders.First();
    string serializedQ = SerializeHelper.Serialize(q1);
    var q2 = SerializeHelper.Deserialize(serializedQ, q1);

    // Track this object for an update (not insert).
    db.Orders.Attach(q2, false);

    // Replay the changes.
    q2.ShipRegion = "King";
    q2.ShipAddress = "1 Microsoft Way";

    // DataContext knows how to update the order.
    db.SubmitChanges();
                   
}
Using db As New Northwnd("")
    ' Get original Customer from deserialization.
    Dim q1 = db.Orders.First()
    Dim serializedQ As String = SerializeHelper.Serialize(q1)
    Dim q2 = SerializeHelper.Deserialize(serializedQ, q1)

    ' Track this object for an update (not insert).
    db.Orders.Attach(q2, False)

    ' Replay the changes.
    q2.ShipRegion = "King"
    q2.ShipAddress = "1 Microsoft Way"

    ' DataContext knows how to update the order.
    db.SubmitChanges()
End Using

En el ejemplo siguiente, un objeto de entidad que se adjuntará tiene una relación de clave externa con otro objeto y se almacenan en la memoria caché pero no asociado.In the following example, an entity object to be attached has a foreign key relation with another object and is stored in the cache but not attached. Cuando se llama a SubmitChanges, ChangeProcessor agrega un Insert operación para todos los objetos de clave externos.When you call SubmitChanges, the ChangeProcessor adds an Insert operation for all the foreign key objects. Esto es un efecto cuando una instancia de entidad se vuelve a usar en otra DataContext instancia.This is a side-effect when an entity instance is re-used in a different DataContext instance. Por este motivo, LINQ to SQLLINQ to SQL no admite la reutilización de los objetos.For this reason, LINQ to SQLLINQ to SQL does not support re-use of objects.

Customer c = null;
using (Northwnd db = new Northwnd(""))
{
    /* Get both the customer c and the customer's order
    into the cache. */
    c = db.Customers.First();
    string sc = c.Orders.First().ShipCity;
}

using (Northwnd nw2 = new Northwnd(""))
{
    // Attach customers and update the address.
    nw2.Customers.Attach(c, false);
    c.Address = "new";
    nw2.Log = Console.Out;

    /* At SubmitChanges, you will see INSERT requests for all
    Customer c’s orders. */
    nw2.SubmitChanges();
}
Sub method7()
    Dim c As Customer = Nothing
    Using db = New Northwnd("...")
        ' Get both the customer c and the customer's order
        ' into the cache.
        c = db.Customers.First()
        Dim sc = c.Orders.First().ShipCity
    End Using

    Using nw2 = New Northwnd("...")
        ' Attach customers and update the address.
        nw2.Customers.Attach(c, False)
        c.Address = "new"
        nw2.Log = Console.Out

        ' At SubmitChanges, you will see INSERT requests for all
        ' c's orders.
        nw2.SubmitChanges()
    End Using

El ejemplo siguiente muestra un escenario en el que un cliente ha cancelado todos los pedidos y clientes B ha asumido la titularidad de ellos.The following example shows a scenario in which Customer A has canceled all orders and Customer B has taken ownership of them. Puede asociar todos los pedidos de un cliente al mismo tiempo.You can attach all orders of Customer A at the same time.

Customer CustA_File = new Customer();
Customer CustB_File = new Customer();
string xmlFileA = "";
string xmlFileB = "";

// Get the serialized objects.
Customer A = SerializeHelper.Deserialize<Customer>(xmlFileA, CustA_File);
Customer B = SerializeHelper.Deserialize<Customer>(xmlFileB, CustB_File);
List<Order> AOrders = A.Orders.ToList();

using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))

{
    //Attach all the orders belonging to Customer A all at once.
    db.Orders.AttachAll(AOrders, false);

    // Update the orders belonging to Customer A to show them
    // as owned by Customer B.
    foreach (Order o in AOrders)
    {
        o.CustomerID = B.CustomerID;
    }

    // DataContext can now apply the change of ownership to
    // the database.
    db.SubmitChanges();
}
Dim custA_File = New Customer()
Dim custB_File = New Customer()
Dim xmlFileA As String = ""
Dim xmlFileB As String = ""

' Get the serialized objects.
Dim A As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileA, custA_File)
Dim B As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileB, custB_File)

Dim AOrders As List(Of Order) = A.Orders.ToList()

Using db As New Northwnd("...")
    'Attach all the orders belonging to Customer A all at once.
    db.Orders.AttachAll(AOrders, False)

    ' Update the orders belonging to Customer A to show them
    ' as owned by Customer B
    For Each o In AOrders
        o.CustomerID = B.CustomerID
    Next

    ' DataContext can now apply the change of ownership to
    'the database
    db.SubmitChanges()
End Using

Comentarios

Este método asocia todas las entidades de una colección a la DataContext en cualquiera un modificado o sin modificar estado.This method attaches all entities of a collection to the DataContext in either a modified or unmodified state. Si se asocia como modificada, la entidad deberá declarar a un miembro de versión 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. Si la conexión como sin modificar, se supone que la entidad representa el valor original.If attaching as unmodified, the entity is assumed to represent the original value. Después de llamar a este método, se pueden modificar los campos de entidad con otra información del cliente antes de SubmitChanges se llama.After calling this method, the entity's fields can be modified with other information from the client before SubmitChanges is called. 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).

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