Freigeben über


Table<TEntity>.AttachAll Methode

Definition

Fügt alle Entitäten einer Auflistung im veränderten oder unveränderten Zustand an den DataContext an.

Überlädt

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Fügt alle Entitäten einer Auflistung im veränderten oder unveränderten Zustand an den DataContext an.

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

Fügt alle Entitäten einer Auflistung im veränderten oder unveränderten Zustand an den DataContext an.

Hinweise

Wenn sie als geändert angefügt wird, muss die Entität entweder ein Versionselement deklarieren oder darf nicht an der Überprüfung von Updatekonflikten teilnehmen.

Wenn eine neue Entität angefügt wird, werden verzögerte Ladeprogramme für alle untergeordneten Auflistungen (z. EntitySet B. Auflistungen von Entitäten aus zugeordneten Tabellen) initialisiert. Wenn SubmitChanges aufgerufen wird, werden Member der untergeordneten Auflistungen in einen Unmodified Zustand versetzt. Um Elemente einer untergeordneten Auflistung zu aktualisieren, müssen Sie diese Entität explizit aufrufen Attach und angeben.

Weitere Informationen finden Sie unter Datenabruf und CUD-Operationen in n-schichtigen Anwendungen (LINQ to SQL).

AttachAll<TSubEntity>(IEnumerable<TSubEntity>)

Fügt alle Entitäten einer Auflistung im veränderten oder unveränderten Zustand an den DataContext an.

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

Typparameter

TSubEntity

Der Typ der anzufügenden Entitäten.

Parameter

entities
IEnumerable<TSubEntity>

Die Auflistung von Entitäten.

Hinweise

Diese Methode fügt alle Entitäten einer Auflistung an eine neue DataContextan. Wenn eine neue Entität angefügt wird, werden verzögerte Ladeprogramme für alle untergeordneten Auflistungen (z. EntitySet B. Auflistungen von Entitäten aus zugeordneten Tabellen) initialisiert. Wenn SubmitChanges aufgerufen wird, werden Member der untergeordneten Auflistungen in einen Unmodified Zustand versetzt. Um Elemente einer untergeordneten Auflistung zu aktualisieren, müssen Sie diese Entität explizit aufrufen Attach und angeben.

Weitere Informationen finden Sie unter Datenabruf und CUD-Operationen in n-schichtigen Anwendungen (LINQ to SQL).

Gilt für:

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

Fügt alle Entitäten einer Auflistung im veränderten oder unveränderten Zustand an den DataContext an.

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)

Typparameter

TSubEntity

Der Typ der anzufügenden Entitäten.

Parameter

entities
IEnumerable<TSubEntity>

Die Auflistung von Entitäten.

asModified
Boolean

true, wenn das Objekt über einen timestamp-Member oder RowVersion-Member verfügt, false, wenn ursprüngliche Werte für die Prüfung auf vollständige Parallelität verwendet werden sollen.

Beispiele

Das folgende Beispiel zeigt, wie Sie ein Order Objekt auf einem anderen DataContext instance aktualisieren können. Im Beispiel wird davon ausgegangen, dass Sie über eine Verbindung mit einer Datenbank verfügen und eine LINQ to SQL-Datei dafür erstellt haben (in diesem Fall die Northwind-Beispieldatenbank).

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

Im folgenden Beispiel verfügt ein anzufügende Entitätsobjekt über eine Fremdschlüsselbeziehung zu einem anderen Objekt und wird im Cache gespeichert, aber nicht angefügt. Wenn Sie aufrufen SubmitChanges, fügt einen ChangeProcessorInsert Vorgang für alle Fremdschlüsselobjekte hinzu. Dies ist ein Nebeneffekt, wenn eine Entität instance in einem anderen DataContext instance wiederverwendet wird. Aus diesem Grund unterstützt LINQ to SQL die Wiederverwendung von Objekten nicht.

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

Das folgende Beispiel zeigt ein Szenario, in dem Kunde A alle Bestellungen storniert hat und Kunde B deren Besitz übernommen hat. Sie können alle Bestellungen von Kunde A gleichzeitig anfügen.

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

Hinweise

Diese Methode fügt alle Entitäten einer Auflistung entweder in einem geänderten oder unveränderten Zustand anDataContext. Wenn sie als geändert angefügt wird, muss die Entität entweder ein Versionselement deklarieren oder darf nicht an der Überprüfung von Updatekonflikten teilnehmen. Wenn sie als unverändert anfügen, wird davon ausgegangen, dass die Entität den ursprünglichen Wert darstellt. Nach dem Aufrufen dieser Methode können die Felder der Entität mit anderen Informationen vom Client geändert werden, bevor SubmitChanges aufgerufen wird. Weitere Informationen finden Sie unter Datenabruf und CUD-Operationen in n-schichtigen Anwendungen (LINQ to SQL).

Wenn eine neue Entität angefügt wird, werden verzögerte Ladeprogramme für alle untergeordneten Auflistungen (z. EntitySet B. Auflistungen von Entitäten aus zugeordneten Tabellen) initialisiert. Wenn SubmitChanges aufgerufen wird, werden Member der untergeordneten Auflistungen in einen Unmodified Zustand versetzt. Um Elemente einer untergeordneten Auflistung zu aktualisieren, müssen Sie diese Entität explizit aufrufen Attach und angeben.

Gilt für: