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é au DataContext.
Surcharges
| Nom | Description |
|---|---|
| Attach(TEntity) |
Attache une entité déconnectée ou « détachée » à une nouvelle DataContext fois lorsque les valeurs d’origine sont requises pour les vérifications d’accès concurrentiel optimistes. |
| Attach(TEntity, Boolean) |
Attache une entité à l’état DataContext modifié ou non modifié. |
| Attach(TEntity, TEntity) |
Attache une entité à l’état DataContext modifié ou non modifié en spécifiant à la fois l’entité et son état d’origine. |
Remarques
Utilisez les Attach méthodes avec des entités qui ont été créées dans un DataContext, sérialisées vers 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 Les opérations de récupération de données et cuD dans les applications multiniveau (LINQ to SQL).
N’essayez pas d’une Attach 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é devient suivie par un deuxième 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ées. Quand SubmitChanges elle est appelée, 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 objet de l’objet fourni. Par 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 à Employee l’employé attaché, au maître et à l’enfant, car il Employee a des relations avec le maître et l’enfant. Vous devez appeler InsertOnSubmit explicitement pour modifier l’état de l’attachement à l’insertion.
Attach(TEntity)
Attache une entité déconnectée ou « détachée » à une nouvelle DataContext fois lorsque les valeurs d’origine sont requises pour les vérifications d’accès concurrentiel optimistes.
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 Attach méthodes avec des entités qui ont été créées dans un DataContext, sérialisées vers 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 pour 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 ensuite 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ées. Quand SubmitChanges elle est appelée, 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 Les opérations de récupération de données et cuD dans les applications multiniveau (LINQ to SQL).
N’essayez pas d’une Attach 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é devient suivie par un deuxième contexte de données.
S’applique à
Attach(TEntity, Boolean)
Attache une entité à l’état DataContext 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 attacher l’entité telle qu’elle a été modifiée ; false pour attacher l’entité comme non modifiée.
Remarques
Si l’attachement est modifié, l’entité doit déclarer un membre de version ou ne 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ées. Quand SubmitChanges elle est appelée, 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é à l’état DataContext 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 qui contiennent 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ées. Quand SubmitChanges elle est appelée, 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é.