Table<TEntity>.AttachAll Yöntem

Tanım

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

Aşırı Yüklemeler

Name Description
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

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

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

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

Açıklamalar

Değiştirildiği gibi ekleniyorsa, varlığın bir sürüm üyesi bildirmesi veya güncelleştirme çakışması denetimine katılmaması gerekir.

Yeni bir varlık eklendiğinde, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. 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 tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext 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, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. 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 tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext 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 örnek, farklı Order bir örnekteki bir DataContext nesneyi nasıl güncelleştirebileceğinizi gösterir. Örnekte bir veritabanıyla bağlantınız olduğu ve bunun için LINQ to SQL dosyası oluşturduğunuz 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ılması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üşterisinin bunların sahipliğini aldığı bir senaryo gösterilmektedir. Müşteri A'nın 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ştirildiği gibi ekleniyorsa, varlığın bir sürüm üyesi bildirmesi veya güncelleştirme çakışması denetimine katılmaması gerekir. 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, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach ve belirtmeniz gerekir.

Şunlara uygulanır