Table<TEntity>.AttachAll Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Koppelt alle entiteiten van een verzameling aan de DataContext verzameling in een gewijzigde of ongewijzigde status.
Overloads
| Name | Description |
|---|---|
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>) |
Koppelt alle entiteiten van een verzameling aan de DataContext verzameling in een gewijzigde of ongewijzigde status. |
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) |
Koppelt alle entiteiten van een verzameling aan de DataContext verzameling in een gewijzigde of ongewijzigde status. |
Opmerkingen
Als deze wordt gekoppeld als gewijzigd, moet de entiteit een versielid declareren of niet deelnemen aan de controle van updateconflicten.
Wanneer een nieuwe entiteit is gekoppeld, worden uitgestelde laadfuncties voor onderliggende verzamelingen (bijvoorbeeld EntitySet verzamelingen entiteiten uit gekoppelde tabellen) geïnitialiseerd. Wanneer SubmitChanges wordt aangeroepen, worden leden van de onderliggende verzamelingen in een Unmodified status geplaatst. Als u leden van een onderliggende verzameling wilt bijwerken, moet u die entiteit expliciet aanroepen Attach en opgeven.
Zie Gegevens ophalen en CUD-bewerkingen in N-tier-toepassingen (LINQ naar SQL) voor meer informatie.
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)
Koppelt alle entiteiten van een verzameling aan de DataContext verzameling in een gewijzigde of ongewijzigde status.
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))
Type parameters
- TSubEntity
Het type entiteiten dat moet worden gekoppeld.
Parameters
- entities
- IEnumerable<TSubEntity>
De verzameling entiteiten.
Opmerkingen
Met deze methode worden alle entiteiten van een verzameling gekoppeld aan een nieuwe DataContext. Wanneer een nieuwe entiteit is gekoppeld, worden uitgestelde laadfuncties voor onderliggende verzamelingen (bijvoorbeeld EntitySet verzamelingen entiteiten uit gekoppelde tabellen) geïnitialiseerd. Wanneer SubmitChanges wordt aangeroepen, worden leden van de onderliggende verzamelingen in een Unmodified status geplaatst. Als u leden van een onderliggende verzameling wilt bijwerken, moet u die entiteit expliciet aanroepen Attach en opgeven.
Zie Gegevens ophalen en CUD-bewerkingen in N-tier-toepassingen (LINQ naar SQL) voor meer informatie.
Van toepassing op
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)
Koppelt alle entiteiten van een verzameling aan de DataContext verzameling in een gewijzigde of ongewijzigde status.
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)
Type parameters
- TSubEntity
Het type entiteiten dat moet worden gekoppeld.
Parameters
- entities
- IEnumerable<TSubEntity>
De verzameling entiteiten.
- asModified
- Boolean
true als het object een tijdstempel of RowVersion-lid heeft; false als de oorspronkelijke waarden worden gebruikt voor de optimistische gelijktijdigheidscontrole.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een Order object op een ander DataContext exemplaar kunt bijwerken. In het voorbeeld wordt ervan uitgegaan dat u een verbinding hebt met een database en hiervoor een LINQ hebt gemaakt naar het SQL-bestand (in dit geval de Northwind-voorbeelddatabase).
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
In het volgende voorbeeld heeft een entiteitsobject dat moet worden gekoppeld een refererende sleutelrelatie met een ander object en wordt deze opgeslagen in de cache, maar niet gekoppeld. Wanneer u aanroept SubmitChanges, ChangeProcessor wordt er een Insert bewerking toegevoegd voor alle refererende-sleutelobjecten. Dit is een neveneffect wanneer een entiteitsexemplaar opnieuw wordt gebruikt in een ander DataContext exemplaar. Om deze reden biedt LINQ naar SQL geen ondersteuning voor hergebruik van objecten.
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
In het volgende voorbeeld ziet u een scenario waarin Klant A alle orders heeft geannuleerd en Klant B eigenaar is geworden van deze orders. U kunt alle orders van Klant A tegelijk bijvoegen.
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
Opmerkingen
Met deze methode worden alle entiteiten van een verzameling gekoppeld aan de DataContext in een gewijzigde of ongewijzigde status. Als deze wordt gekoppeld als gewijzigd, moet de entiteit een versielid declareren of niet deelnemen aan de controle van updateconflicten. Als de entiteit wordt gekoppeld als ongewijzigd, wordt ervan uitgegaan dat deze de oorspronkelijke waarde vertegenwoordigt. Nadat u deze methode hebt aangeroepen, kunnen de velden van de entiteit worden gewijzigd met andere gegevens van de client voordat SubmitChanges deze wordt aangeroepen. Zie Gegevens ophalen en CUD-bewerkingen in N-tier-toepassingen (LINQ naar SQL) voor meer informatie.
Wanneer een nieuwe entiteit is gekoppeld, worden uitgestelde laadfuncties voor onderliggende verzamelingen (bijvoorbeeld EntitySet verzamelingen entiteiten uit gekoppelde tabellen) geïnitialiseerd. Wanneer SubmitChanges wordt aangeroepen, worden leden van de onderliggende verzamelingen in een Unmodified status geplaatst. Als u leden van een onderliggende verzameling wilt bijwerken, moet u die entiteit expliciet aanroepen Attach en opgeven.