Table<TEntity>.Attach Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Associa un'entità a DataContext.
Overload
Attach(TEntity) |
Associa un’entità scollegata o "disconnessa" a un oggetto DataContext nuovo quando sono necessari valori originali per i controlli di concorrenza ottimistica. |
Attach(TEntity, Boolean) |
Associa un'entità a DataContext in uno stato modificato o non modificato. |
Attach(TEntity, TEntity) |
Associa un'entità a DataContext in uno stato modificato o non modificato specificando l'entità e lo stato originale. |
Commenti
Usare i Attach
metodi con le entità create in un client, serializzati in un DataContextclient e quindi deserializzati (con l'intenzione di eseguire un'operazione di aggiornamento o eliminazione). Per altre informazioni, vedere Operazioni di recupero dei dati e CUD in applicazioni a livello N (LINQ to SQL).
Non provare a Attach
un'entità che non è stata scollegata tramite la serializzazione. Le entità che non sono state serializzate mantengono ancora associazioni con caricatori posticipati che possono causare risultati imprevisti se l'entità viene rilevata da un secondo contesto di dati.
Quando viene associata una nuova entità, vengono inizializzati i caricatori posticipati per le raccolte figlio, ad esempio EntitySet
raccolte di entità da tabelle associate. Quando SubmitChanges viene chiamato, i membri delle raccolte figlio vengono inseriti in uno Unmodified
stato. Per aggiornare i membri di una raccolta figlio, è necessario chiamare Attach
in modo esplicito e specificare tale entità.
Attach
associa tutte le entità nel grafico a oggetti dell'oggetto specificato. Ad esempio:
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
Chiamata Attach
a Employee
dipendenti, master e figlio, perché ha Employee
relazioni sia a master che a figlio. È necessario chiamare InsertOnSubmit
in modo esplicito per modificare lo stato da collegato a inserito.
Attach(TEntity)
Associa un’entità scollegata o "disconnessa" a un oggetto DataContext nuovo quando sono necessari valori originali per i controlli di concorrenza ottimistica.
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)
Parametri
- entity
- TEntity
Valori originali dell'entità da associare.
Implementazioni
Commenti
Usare i Attach
metodi con le entità create in un client, serializzati in un DataContextclient e quindi deserializzati per eseguire un'operazione di aggiornamento o eliminazione. Poiché il nuovo DataContext non ha modo di tenere traccia dei valori originali per un'entità disconnessa, il client è responsabile della fornitura di tali valori. In questa versione di Attachsi presuppone che l'entità sia nello stato del valore originale. Dopo aver chiamato questo metodo, è possibile aggiornare i campi, ad esempio con dati aggiuntivi inviati dal client.
Quando viene associata una nuova entità, vengono inizializzati i caricatori posticipati per le raccolte figlio, ad esempio EntitySet
raccolte di entità da tabelle associate. Quando SubmitChanges viene chiamato, i membri delle raccolte figlio vengono inseriti in uno Unmodified
stato. Per aggiornare i membri di una raccolta figlio, è necessario chiamare Attach
in modo esplicito e specificare tale entità.
Per altre informazioni, vedere Operazioni di recupero dei dati e CUD in applicazioni a livello N (LINQ to SQL).
Non provare a Attach
un'entità che non è stata scollegata tramite la serializzazione. Le entità che non sono state serializzate mantengono ancora associazioni con caricatori posticipati che possono causare risultati imprevisti se l'entità viene rilevata da un secondo contesto di dati.
Si applica a
Attach(TEntity, Boolean)
Associa un'entità a DataContext in uno stato modificato o non modificato.
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)
Parametri
- entity
- TEntity
Entità da associare.
- asModified
- Boolean
true
per associare l'entità come modificata; false
per associare l'entità come invariata.
Commenti
Se si collega come modificato, l'entità deve dichiarare un membro della versione o non deve partecipare al controllo dei conflitti di aggiornamento. Quando viene associata una nuova entità, vengono inizializzati i caricatori posticipati per le raccolte figlio, ad esempio EntitySet
raccolte di entità da tabelle associate. Quando SubmitChanges viene chiamato, i membri delle raccolte figlio vengono inseriti in uno Unmodified
stato. Per aggiornare i membri di una raccolta figlio, è necessario chiamare Attach
in modo esplicito e specificare tale entità.
Si applica a
Attach(TEntity, TEntity)
Associa un'entità a DataContext in uno stato modificato o non modificato specificando l'entità e lo stato originale.
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)
Parametri
- entity
- TEntity
Entità da associare.
- original
- TEntity
Istanza dello stesso tipo di entità con membri dati che contengono i valori originali.
Esempio
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
Commenti
Nell'esempio seguente l'oggetto Customer
è già configurato correttamente. È possibile chiamare Attach
senza dover riprodurre gli aggiornamenti.
Quando viene associata una nuova entità, vengono inizializzati i caricatori posticipati per le raccolte figlio, ad esempio EntitySet
raccolte di entità da tabelle associate. Quando SubmitChanges viene chiamato, i membri delle raccolte figlio vengono inseriti in uno Unmodified
stato. Per aggiornare i membri di una raccolta figlio, è necessario chiamare Attach
in modo esplicito e specificare tale entità.