Partager via


Table<TEntity>.Attach Méthode

Définition

Attache une entité à la classe DataContext.

Surcharges

Attach(TEntity)

Attache une entité déconnectée ou détachée à une nouvelle classe DataContext lorsque les valeurs d'origine sont requises pour permettre les contrôles d'accès concurrentiels.

Attach(TEntity, Boolean)

Attache une entité à la classe DataContext dans un état modifié ou non modifié.

Attach(TEntity, TEntity)

Attache une entité à la classe DataContext dans un état modifié ou non modifié en spécifiant à la fois l'entité et son état d'origine.

Remarques

Utilisez les méthodes avec des Attach entités qui ont été créées dans une , DataContextsérialisées sur un client, puis désérialisées (avec l’intention d’effectuer une opération de mise à jour ou de suppression). Pour plus d’informations, consultez Récupération de données et opérations CUD dans les applications multiniveaux (LINQ to SQL).

N’essayez pas d’utiliser Attach une entité qui n’a pas été détachée par sérialisation. Les entités qui n’ont pas été sérialisées conservent toujours des associations avec des chargeurs différés qui peuvent provoquer des résultats inattendus si l’entité est suivie par un second contexte de données.

Lorsqu’une nouvelle entité est attachée, les chargeurs différés pour les collections enfants (par exemple, EntitySet les collections d’entités des tables associées) sont initialisés. Quand SubmitChanges est appelé, les membres des collections enfants sont placés dans un Unmodified état. Pour mettre à jour les membres d’une collection enfant, vous devez appeler Attach et spécifier explicitement cette entité.

Attach attache toutes les entités dans le graphique d’objets de l’objet fourni. Exemple :

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  

L’appel Attach sur Employee attache l’employé, le master et l’enfant, car le Employee a des relations avec master et enfant. Vous devez appeler InsertOnSubmit explicitement pour changer l’état de attaché à inséré.

Attach(TEntity)

Attache une entité déconnectée ou détachée à une nouvelle classe DataContext lorsque les valeurs d'origine sont requises pour permettre les contrôles d'accès concurrentiels.

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)

Paramètres

entity
TEntity

Valeurs d'origine de l'entité à attacher.

Implémente

Remarques

Utilisez les méthodes avec des Attach entités qui ont été créées dans un , DataContextsérialisées sur un client, puis désérialisées pour effectuer une opération de mise à jour ou de suppression. Étant donné que le nouveau DataContext n’a aucun moyen de suivre les valeurs d’origine d’une entité déconnectée, le client est responsable de la fourniture de ces valeurs. Dans cette version de Attach, l’entité est supposée être dans son état de valeur d’origine. Après avoir appelé cette méthode, vous pouvez mettre à jour ses champs, par exemple avec des données supplémentaires envoyées à partir du client.

Lorsqu’une nouvelle entité est attachée, les chargeurs différés pour les collections enfants (par exemple, EntitySet les collections d’entités des tables associées) sont initialisés. Quand SubmitChanges est appelé, les membres des collections enfants sont placés dans un Unmodified état. Pour mettre à jour les membres d’une collection enfant, vous devez appeler Attach et spécifier explicitement cette entité.

Pour plus d’informations, consultez Récupération de données et opérations CUD dans les applications multiniveaux (LINQ to SQL).

N’essayez pas d’utiliser Attach une entité qui n’a pas été détachée par sérialisation. Les entités qui n’ont pas été sérialisées conservent toujours des associations avec des chargeurs différés qui peuvent provoquer des résultats inattendus si l’entité est suivie par un second contexte de données.

S’applique à

Attach(TEntity, Boolean)

Attache une entité à la classe DataContext dans un état modifié ou non modifié.

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)

Paramètres

entity
TEntity

Entité à attacher.

asModified
Boolean

true pour joindre une entité comme étant modifiée ; false pour joindre une entité comme étant non modifiée.

Remarques

Si l’attachement est modifié, l’entité doit déclarer un membre de version ou ne doit pas participer à la vérification des conflits de mise à jour. Lorsqu’une nouvelle entité est attachée, les chargeurs différés pour les collections enfants (par exemple, EntitySet les collections d’entités des tables associées) sont initialisés. Quand SubmitChanges est appelé, les membres des collections enfants sont placés dans un Unmodified état. Pour mettre à jour les membres d’une collection enfant, vous devez appeler Attach et spécifier explicitement cette entité.

S’applique à

Attach(TEntity, TEntity)

Attache une entité à la classe DataContext dans un état modifié ou non modifié en spécifiant à la fois l'entité et son état d'origine.

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)

Paramètres

entity
TEntity

Entité à attacher.

original
TEntity

Instance du même type d'entité avec des membres de données contenant les valeurs d'origine.

Exemples

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

Remarques

Dans l’exemple suivant, l’objet Customer est déjà correctement configuré. Vous pouvez appeler Attach sans avoir à relire les mises à jour.

Lorsqu’une nouvelle entité est attachée, les chargeurs différés pour les collections enfants (par exemple, EntitySet les collections d’entités des tables associées) sont initialisés. Quand SubmitChanges est appelé, les membres des collections enfants sont placés dans un Unmodified état. Pour mettre à jour les membres d’une collection enfant, vous devez appeler Attach et spécifier explicitement cette entité.

S’applique à