Table<TEntity>.AttachAll Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Připojí všechny entity kolekce k DataContext upravenému nebo nemodifikovanému stavu.
Přetížení
| Name | Description |
|---|---|
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>) |
Připojí všechny entity kolekce k DataContext upravenému nebo nemodifikovanému stavu. |
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) |
Připojí všechny entity kolekce k DataContext upravenému nebo nemodifikovanému stavu. |
Poznámky
Pokud je entita připojování upravená, musí buď deklarovat člena verze, nebo se nesmí účastnit kontroly konfliktů aktualizací.
Při připojení nové entity se inicializují odložené zavaděče pro všechny podřízené kolekce (například EntitySet kolekce entit z přidružených tabulek). Při SubmitChanges zavolání se členové podřízených kolekcí zadají do Unmodified stavu. Chcete-li aktualizovat členy podřízené kolekce, musíte explicitně zavolat Attach a zadat tuto entitu.
Další informace naleznete v tématu Načítání dat a operace CUD v N-vrstvých aplikacích (LINQ to SQL).
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)
Připojí všechny entity kolekce k DataContext upravenému nebo nemodifikovanému stavu.
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 entit, které se mají připojit.
Parametry
- entities
- IEnumerable<TSubEntity>
Kolekce entit.
Poznámky
Tato metoda připojí všechny entity kolekce k nové DataContext. Při připojení nové entity se inicializují odložené zavaděče pro všechny podřízené kolekce (například EntitySet kolekce entit z přidružených tabulek). Při SubmitChanges zavolání se členové podřízených kolekcí zadají do Unmodified stavu. Chcete-li aktualizovat členy podřízené kolekce, musíte explicitně zavolat Attach a zadat tuto entitu.
Další informace naleznete v tématu Načítání dat a operace CUD v N-vrstvých aplikacích (LINQ to SQL).
Platí pro
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)
Připojí všechny entity kolekce k DataContext upravenému nebo nemodifikovanému stavu.
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 entit, které se mají připojit.
Parametry
- entities
- IEnumerable<TSubEntity>
Kolekce entit.
- asModified
- Boolean
true pokud má objekt časové razítko nebo RowVersion člen; false pokud se pro kontrolu optimistické souběžnosti používají původní hodnoty.
Příklady
Následující příklad ukazuje, jak můžete aktualizovat Order objekt v jiné DataContext instanci. Příklad předpokládá, že máte připojení k databázi a vytvořili pro něj LINQ to SQL (v tomto případě ukázkovou databázi 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
V následujícím příkladu má objekt entity, který se má připojit, vztah cizího klíče s jiným objektem a je uložen v mezipaměti, ale není připojen. Při volání SubmitChangespřidá ChangeProcessorInsert operaci pro všechny objekty cizího klíče. Jedná se o vedlejší účinek, když se instance entity znovu použije v jiné DataContext instanci. Z tohoto důvodu LINQ to SQL nepodporuje opakované použití objektů.
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
Následující příklad ukazuje scénář, ve kterém zákazník A zrušil všechny objednávky a zákazník B převzal vlastnictví. Všechny objednávky zákazníka A můžete připojit současně.
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
Poznámky
Tato metoda připojí všechny entity kolekce k DataContextupravenému nebo nemodifikovanému stavu. Pokud je entita připojování upravená, musí buď deklarovat člena verze, nebo se nesmí účastnit kontroly konfliktů aktualizací. Pokud se připojí jako neupravené, předpokládá se, že entita představuje původní hodnotu. Po volání této metody je možné pole entity upravit s dalšími informacemi z klienta před SubmitChanges voláním. Další informace naleznete v tématu Načítání dat a operace CUD v N-vrstvých aplikacích (LINQ to SQL).
Při připojení nové entity se inicializují odložené zavaděče pro všechny podřízené kolekce (například EntitySet kolekce entit z přidružených tabulek). Při SubmitChanges zavolání se členové podřízených kolekcí zadají do Unmodified stavu. Chcete-li aktualizovat členy podřízené kolekce, musíte explicitně zavolat Attach a zadat tuto entitu.