Table<TEntity>.Attach Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é.