Table<TEntity>.AttachAll Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 ChangeProcessor
Insert
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.