Table<TEntity>.Attach Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.