Table<TEntity>.AttachAll Metoda

Definicja

Dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym.

Przeciążenia

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym.

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

Dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym.

Uwagi

W przypadku dołączania jako zmodyfikowanego jednostka musi zadeklarować element członkowski wersji lub nie może uczestniczyć w sprawdzaniu konfliktów aktualizacji.

Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Aby uzyskać więcej informacji, zobacz Operacje pobierania danych i cud w aplikacjach N-warstwowych (LINQ to SQL).

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym.

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

Parametry typu

TSubEntity

Typ jednostek do dołączenia.

Parametry

entities
IEnumerable<TSubEntity>

Kolekcja jednostek.

Uwagi

Ta metoda dołącza wszystkie jednostki kolekcji do nowego DataContextobiektu . Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Aby uzyskać więcej informacji, zobacz Operacje pobierania danych i cud w aplikacjach N-warstwowych (LINQ to SQL).

Dotyczy

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

Dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym.

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)

Parametry typu

TSubEntity

Typ jednostek do dołączenia.

Parametry

entities
IEnumerable<TSubEntity>

Kolekcja jednostek.

asModified
Boolean

true jeśli obiekt ma znacznik czasu lub element członkowski RowVersion; false jeśli oryginalne wartości są używane do sprawdzania optymistycznej współbieżności.

Przykłady

W poniższym przykładzie pokazano, jak można zaktualizować Order obiekt w innym DataContext wystąpieniu. W przykładzie założono, że masz połączenie z bazą danych i utworzono dla niej plik LINQ to SQL (w tym przypadku przykładowej bazy danych 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

W poniższym przykładzie obiekt jednostki, który ma zostać dołączony, ma relację klucza obcego z innym obiektem i jest przechowywany w pamięci podręcznej, ale nie jest dołączony. Po wywołaniu SubmitChangesChangeProcessor metody funkcja dodaje operację Insert dla wszystkich obiektów klucza obcego. Jest to efekt uboczny, gdy wystąpienie jednostki jest ponownie używane w innym DataContext wystąpieniu. Z tego powodu LINQ to SQL nie obsługuje ponownego używania obiektów.

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

W poniższym przykładzie pokazano scenariusz, w którym klient A anulował wszystkie zamówienia, a Klient B przejął na siebie własność. Wszystkie zamówienia klienta A można dołączyć w tym samym czasie.

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

Uwagi

Ta metoda dołącza wszystkie jednostki kolekcji do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym . W przypadku dołączania jako zmodyfikowanego jednostka musi zadeklarować element członkowski wersji lub nie może uczestniczyć w sprawdzaniu konfliktów aktualizacji. W przypadku dołączania jako niezmodyfikowanego zakłada się, że jednostka reprezentuje oryginalną wartość. Po wywołaniu tej metody pola jednostki można modyfikować przy użyciu innych informacji od klienta przed SubmitChanges wywołaniem. Aby uzyskać więcej informacji, zobacz Operacje pobierania danych i cud w aplikacjach N-warstwowych (LINQ to SQL).

Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Dotyczy