Aracılığıyla paylaş


Table<TEntity>.AttachAll Yöntem

Tanım

Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.

Aşırı Yüklemeler

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.

AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)

Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.

Açıklamalar

Değiştirme olarak iliştirilirse, varlık bir sürüm üyesi bildirmeli veya güncelleştirme çakışma denetimine katılmamalıdır.

Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach ve belirtmeniz gerekir.

Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.

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))

Tür Parametreleri

TSubEntity

Eklenecek varlık türü.

Parametreler

entities
IEnumerable<TSubEntity>

Varlık koleksiyonu.

Açıklamalar

Bu yöntem bir koleksiyonun tüm varlıklarını yeni DataContextbir öğesine ekler. Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach ve belirtmeniz gerekir.

Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).

Şunlara uygulanır

AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)

Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.

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)

Tür Parametreleri

TSubEntity

Eklenecek varlık türü.

Parametreler

entities
IEnumerable<TSubEntity>

Varlık koleksiyonu.

asModified
Boolean

true nesnenin bir zaman damgası veya RowVersion üyesi varsa; false özgün değerler iyimser eşzamanlılık denetimi için kullanılıyorsa.

Örnekler

Aşağıdaki örnekte, farklı DataContext bir örnekteki bir Order nesneyi nasıl güncelleştirebileceğiniz gösterilmektedir. Örnekte, bir veritabanıyla bağlantınız olduğu ve veritabanı için bir LINQ to SQL dosyası yaptığınız varsayılır (bu örnekte Northwind örnek veritabanı).

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

Aşağıdaki örnekte, eklenecek bir varlık nesnesinin başka bir nesneyle yabancı anahtar ilişkisi vardır ve önbellekte depolanır ancak eklenmez. çağırdığınızda SubmitChanges, ChangeProcessor tüm yabancı anahtar nesneleri için bir Insert işlem ekler. Bu, bir varlık örneği farklı DataContext bir örnekte yeniden kullanıldığında bir yan etkidir. Bu nedenle, LINQ to SQL nesnelerin yeniden kullanımını desteklemez.

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

Aşağıdaki örnekte, A Müşterisinin tüm siparişleri iptal ettiği ve B Müşterisi'nin bunların sahipliğini aldığı bir senaryo gösterilmektedir. A Müşterisinin tüm siparişlerini aynı anda ekleyebilirsiniz.

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

Açıklamalar

Bu yöntem, bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler. Değiştirme olarak iliştirilirse, varlık bir sürüm üyesi bildirmeli veya güncelleştirme çakışma denetimine katılmamalıdır. Değiştirilmemiş olarak ekleniyorsa, varlığın özgün değeri temsildiği varsayılır. Bu yöntem çağrıldıktan sonra varlığın alanları çağrılmadan önce SubmitChanges istemciden gelen diğer bilgilerle değiştirilebilir. Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).

Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach ve belirtmeniz gerekir.

Şunlara uygulanır