Table<TEntity>.AttachAll 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 semua entitas koleksi ke DataContext dalam status dimodifikasi atau tidak dimodifikasi.
Overload
AttachAll<TSubEntity>(IEnumerable<TSubEntity>) |
Melampirkan semua entitas koleksi ke DataContext dalam status dimodifikasi atau tidak dimodifikasi. |
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) |
Melampirkan semua entitas koleksi ke DataContext dalam status dimodifikasi atau 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.
Untuk informasi selengkapnya, lihat Pengambilan Data dan Operasi CUD di Aplikasi N-Tier (LINQ ke SQL).
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)
Melampirkan semua entitas koleksi ke DataContext dalam status dimodifikasi atau tidak dimodifikasi.
public:
generic <typename TSubEntity>
where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities);
public void AttachAll<TSubEntity> (System.Collections.Generic.IEnumerable<TSubEntity> entities) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity))
Jenis parameter
- TSubEntity
Jenis entitas yang akan dilampirkan.
Parameter
- entities
- IEnumerable<TSubEntity>
Pengumpulan entitas.
Keterangan
Metode ini melampirkan semua entitas koleksi ke yang baru DataContext. 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).
Berlaku untuk
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)
Melampirkan semua entitas koleksi ke DataContext dalam status dimodifikasi atau tidak dimodifikasi.
public:
generic <typename TSubEntity>
where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities, bool asModified);
public void AttachAll<TSubEntity> (System.Collections.Generic.IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> * bool -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity), asModified As Boolean)
Jenis parameter
- TSubEntity
Jenis entitas yang akan dilampirkan.
Parameter
- entities
- IEnumerable<TSubEntity>
Pengumpulan entitas.
- asModified
- Boolean
true
jika objek memiliki tanda waktu atau anggota RowVersion; false
jika nilai asli digunakan untuk pemeriksaan konkurensi optimis.
Contoh
Contoh berikut menunjukkan bagaimana Anda dapat memperbarui Order
objek pada instans yang berbeda DataContext . Contoh mengasumsikan bahwa Anda memiliki koneksi ke database dan telah membuat LINQ ke file SQL untuk itu (dalam hal ini, database sampel Northwind).
using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))
{
// Get original Customer from deserialization.
var q1 = db.Orders.First();
string serializedQ = SerializeHelper.Serialize(q1);
var q2 = SerializeHelper.Deserialize(serializedQ, q1);
// Track this object for an update (not insert).
db.Orders.Attach(q2, false);
// Replay the changes.
q2.ShipRegion = "King";
q2.ShipAddress = "1 Microsoft Way";
// DataContext knows how to update the order.
db.SubmitChanges();
}
Using db As New Northwnd("")
' Get original Customer from deserialization.
Dim q1 = db.Orders.First()
Dim serializedQ As String = SerializeHelper.Serialize(q1)
Dim q2 = SerializeHelper.Deserialize(serializedQ, q1)
' Track this object for an update (not insert).
db.Orders.Attach(q2, False)
' Replay the changes.
q2.ShipRegion = "King"
q2.ShipAddress = "1 Microsoft Way"
' DataContext knows how to update the order.
db.SubmitChanges()
End Using
Dalam contoh berikut, objek entitas yang akan dilampirkan memiliki hubungan kunci asing dengan objek lain dan disimpan dalam cache tetapi tidak terpasang. Saat Anda memanggil SubmitChanges, ChangeProcessor
menambahkan Insert
operasi untuk semua objek kunci asing. Ini adalah efek samping ketika instans entitas digunakan kembali dalam instans yang berbeda DataContext . Untuk alasan ini, LINQ ke SQL tidak mendukung penggunaan kembali objek.
Customer c = null;
using (Northwnd db = new Northwnd(""))
{
/* Get both the customer c and the customer's order
into the cache. */
c = db.Customers.First();
string sc = c.Orders.First().ShipCity;
}
using (Northwnd nw2 = new Northwnd(""))
{
// Attach customers and update the address.
nw2.Customers.Attach(c, false);
c.Address = "new";
nw2.Log = Console.Out;
/* At SubmitChanges, you will see INSERT requests for all
Customer c’s orders. */
nw2.SubmitChanges();
}
Sub method7()
Dim c As Customer = Nothing
Using db = New Northwnd("...")
' Get both the customer c and the customer's order
' into the cache.
c = db.Customers.First()
Dim sc = c.Orders.First().ShipCity
End Using
Using nw2 = New Northwnd("...")
' Attach customers and update the address.
nw2.Customers.Attach(c, False)
c.Address = "new"
nw2.Log = Console.Out
' At SubmitChanges, you will see INSERT requests for all
' c's orders.
nw2.SubmitChanges()
End Using
Contoh berikut menunjukkan skenario di mana Pelanggan A telah membatalkan semua pesanan dan Pelanggan B telah mengambil kepemilikannya. Anda dapat melampirkan semua pesanan Pelanggan A secara bersamaan.
Customer CustA_File = new Customer();
Customer CustB_File = new Customer();
string xmlFileA = "";
string xmlFileB = "";
// Get the serialized objects.
Customer A = SerializeHelper.Deserialize<Customer>(xmlFileA, CustA_File);
Customer B = SerializeHelper.Deserialize<Customer>(xmlFileB, CustB_File);
List<Order> AOrders = A.Orders.ToList();
using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))
{
//Attach all the orders belonging to Customer A all at once.
db.Orders.AttachAll(AOrders, false);
// Update the orders belonging to Customer A to show them
// as owned by Customer B.
foreach (Order o in AOrders)
{
o.CustomerID = B.CustomerID;
}
// DataContext can now apply the change of ownership to
// the database.
db.SubmitChanges();
}
Dim custA_File = New Customer()
Dim custB_File = New Customer()
Dim xmlFileA As String = ""
Dim xmlFileB As String = ""
' Get the serialized objects.
Dim A As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileA, custA_File)
Dim B As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileB, custB_File)
Dim AOrders As List(Of Order) = A.Orders.ToList()
Using db As New Northwnd("...")
'Attach all the orders belonging to Customer A all at once.
db.Orders.AttachAll(AOrders, False)
' Update the orders belonging to Customer A to show them
' as owned by Customer B
For Each o In AOrders
o.CustomerID = B.CustomerID
Next
' DataContext can now apply the change of ownership to
'the database
db.SubmitChanges()
End Using
Keterangan
Metode ini melampirkan semua entitas koleksi ke DataContext dalam status dimodifikasi atau tidak dimodifikasi . Jika melampirkan sebagai dimodifikasi, entitas harus mendeklarasikan anggota versi atau tidak boleh berpartisipasi dalam pemeriksaan konflik pembaruan. Jika melampirkan sebagai tidak dimodifikasi, entitas diasumsikan mewakili nilai asli. Setelah memanggil metode ini, bidang entitas dapat dimodifikasi dengan informasi lain dari klien sebelumnya SubmitChanges dipanggil. Untuk informasi selengkapnya, lihat Pengambilan Data dan Operasi CUD di Aplikasi N-Tier (LINQ ke SQL).
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.