Table<TEntity>.AttachAll Metode

Definisi

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.

Berlaku untuk