Condividi tramite


Table<TEntity>.Attach Metodo

Definizione

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

Si applica a