Bagikan melalui


Table<TEntity>.Attach Metode

Definisi

Melampirkan entitas ke DataContext.

Overload

Attach(TEntity)

Melampirkan entitas yang terputus atau "tercopot" ke entitas baru DataContext saat nilai asli diperlukan untuk pemeriksaan konkurensi optimis.

Attach(TEntity, Boolean)

Melampirkan entitas ke DataContext dalam status dimodifikasi atau tidak dimodifikasi.

Attach(TEntity, TEntity)

Melampirkan entitas ke DataContext dalam status dimodifikasi atau tidak dimodifikasi dengan menentukan entitas dan status aslinya.

Keterangan

Attach Gunakan metode dengan entitas yang telah dibuat dalam satu DataContext, yang diserialisasikan ke klien, lalu deserialisasi kembali (dengan niat untuk melakukan operasi pembaruan atau penghapusan). Untuk informasi selengkapnya, lihat Pengambilan Data dan Operasi CUD di Aplikasi N-Tier (LINQ ke SQL).

Jangan mencoba ke Attach entitas yang belum dilepas melalui serialisasi. Entitas yang belum diserialisasikan masih mempertahankan asosiasi dengan loader yang ditangguhkan yang dapat menyebabkan hasil yang tidak terduga jika entitas dilacak oleh konteks data kedua.

Saat entitas baru dilampirkan, loader yang ditangguhkan untuk setiap koleksi anak (misalnya, EntitySet kumpulan entitas dari tabel terkait) diinisialisasi. Ketika SubmitChanges dipanggil, anggota koleksi anak dimasukkan ke dalam status Unmodified . Untuk memperbarui anggota koleksi anak, Anda harus secara eksplisit memanggil Attach dan menentukan entitas tersebut.

Attach melampirkan semua entitas dalam grafik objek dari objek yang disediakan. Contohnya:

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  

Attach Panggilan pada Employee melampirkan karyawan, master, dan anak, karena Employee memiliki hubungan dengan master dan anak. Anda harus secara eksplisit memanggil InsertOnSubmit untuk mengubah status dari terlampir menjadi disisipkan.

Attach(TEntity)

Melampirkan entitas yang terputus atau "tercopot" ke entitas baru DataContext saat nilai asli diperlukan untuk pemeriksaan konkurensi optimis.

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)

Parameter

entity
TEntity

Nilai asli entitas yang akan dilampirkan.

Penerapan

Keterangan

Attach Gunakan metode dengan entitas yang telah dibuat dalam satu DataContext, yang diserialisasikan ke klien, lalu deserialisasi kembali untuk melakukan operasi pembaruan atau penghapusan. Karena yang baru DataContext tidak memiliki cara untuk melacak nilai asli untuk entitas yang terputus, klien bertanggung jawab untuk menyediakan nilai-nilai tersebut. Dalam versi Attachini , entitas diasumsikan berada dalam status nilai aslinya. Setelah memanggil metode ini, Anda kemudian dapat memperbarui bidangnya, misalnya dengan data tambahan yang dikirim dari klien.

Saat entitas baru dilampirkan, loader yang ditangguhkan untuk setiap koleksi anak (misalnya, EntitySet kumpulan entitas dari tabel terkait) diinisialisasi. Ketika SubmitChanges dipanggil, anggota koleksi anak dimasukkan ke dalam status Unmodified . Untuk memperbarui anggota koleksi anak, Anda harus secara eksplisit memanggil Attach dan menentukan entitas tersebut.

Untuk informasi selengkapnya, lihat Pengambilan Data dan Operasi CUD di Aplikasi N-Tier (LINQ ke SQL).

Jangan mencoba ke Attach entitas yang belum dilepas melalui serialisasi. Entitas yang belum diserialisasikan masih mempertahankan asosiasi dengan loader yang ditangguhkan yang dapat menyebabkan hasil yang tidak terduga jika entitas dilacak oleh konteks data kedua.

Berlaku untuk

Attach(TEntity, Boolean)

Melampirkan entitas ke DataContext dalam status dimodifikasi atau tidak dimodifikasi.

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)

Parameter

entity
TEntity

Entitas yang akan dilampirkan.

asModified
Boolean

true untuk melampirkan entitas sebagai dimodifikasi; false untuk melampirkan entitas sebagai tidak dimodifikasi.

Keterangan

Jika melampirkan sebagai dimodifikasi, entitas harus mendeklarasikan anggota versi atau tidak boleh berpartisipasi dalam pemeriksaan konflik pembaruan. Saat entitas baru dilampirkan, loader yang ditangguhkan untuk setiap koleksi anak (misalnya, EntitySet kumpulan entitas dari tabel terkait) diinisialisasi. Ketika SubmitChanges dipanggil, anggota koleksi anak dimasukkan ke dalam status Unmodified . Untuk memperbarui anggota koleksi anak, Anda harus secara eksplisit memanggil Attach dan menentukan entitas tersebut.

Berlaku untuk

Attach(TEntity, TEntity)

Melampirkan entitas ke DataContext dalam status dimodifikasi atau tidak dimodifikasi dengan menentukan entitas dan status aslinya.

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)

Parameter

entity
TEntity

Entitas yang akan dilampirkan.

original
TEntity

Instans jenis entitas yang sama dengan anggota data yang berisi nilai asli.

Contoh

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

Keterangan

Dalam contoh berikut, objek sudah dikonfigurasi Customer dengan benar. Anda dapat memanggil Attach tanpa harus memutar ulang pembaruan.

Saat entitas baru dilampirkan, loader yang ditangguhkan untuk setiap koleksi anak (misalnya, EntitySet kumpulan entitas dari tabel terkait) diinisialisasi. Ketika SubmitChanges dipanggil, anggota koleksi anak dimasukkan ke dalam status Unmodified . Untuk memperbarui anggota koleksi anak, Anda harus secara eksplisit memanggil Attach dan menentukan entitas tersebut.

Berlaku untuk