Table<TEntity>.AttachAll Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ę.