Table<TEntity>.Attach Methode

Definitie

Koppelt een entiteit aan de DataContext.

Overloads

Name Description
Attach(TEntity)

Koppelt een niet-verbonden of 'losgekoppelde' entiteit aan een nieuwe DataContext wanneer oorspronkelijke waarden vereist zijn voor optimistische gelijktijdigheidscontroles.

Attach(TEntity, Boolean)

Koppelt een entiteit aan de DataContext entiteit in een gewijzigde of ongewijzigde status.

Attach(TEntity, TEntity)

Koppelt een entiteit aan de DataContext entiteit in een gewijzigde of ongewijzigde status door zowel de entiteit als de oorspronkelijke staat op te geven.

Opmerkingen

Gebruik de Attach methoden met entiteiten die zijn gemaakt in één DataContext, geserialiseerd naar een client en vervolgens gedeserialiseerde back (met de bedoeling om een update- of verwijderbewerking uit te voeren). Zie Gegevens ophalen en CUD-bewerkingen in N-tier-toepassingen (LINQ naar SQL) voor meer informatie.

Probeer geen entiteit die Attach niet is losgekoppeld via serialisatie. Entiteiten die niet zijn geserialiseerd, onderhouden nog steeds koppelingen met uitgestelde laadfuncties die onverwachte resultaten kunnen veroorzaken als de entiteit wordt bijgehouden door een tweede gegevenscontext.

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.

Attach voegt alle entiteiten in de objectgrafiek van het opgegeven object toe. Voorbeeld:

using (var db = new SampleDataContext())
{
    var employee = new Employee { employeeId = 1 };

    var master = new Master();
    master.Employee = employee;

    var child = new Child();
    child.Employee = employee;

    db.Employees.Attach(employee);

    master.Child = child;

    db.Masters.InsertOnSubmit(master);

    db.SubmitChanges();
}
Using db As New SampleDataContext()
    Dim employee As New Employee With { .employeeId = 1 }

    Dim master As New Master()
    master.Employee = employee

    Dim child As New Child()
    child.Employee = employee

    db.Employees.Attach(employee)

    master.Child = child

    db.Masters.InsertOnSubmit(master)

    db.SubmitChanges()

End Using

Attach Als u aanroeptEmployee, worden werknemers, hoofd en kind gekoppeld, omdat de relatie heeft met zowel de hoofd- als het Employee onderliggende element. U moet expliciet aanroepen InsertOnSubmit om de status te wijzigen van gekoppeld aan ingevoegd.

Attach(TEntity)

Koppelt een niet-verbonden of 'losgekoppelde' entiteit aan een nieuwe DataContext wanneer oorspronkelijke waarden vereist zijn voor optimistische gelijktijdigheidscontroles.

public:
 void Attach(TEntity entity);
public:
 virtual void Attach(TEntity entity);
public void Attach(TEntity entity);
member this.Attach : 'Entity -> unit
abstract member Attach : 'Entity -> unit
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)

Parameters

entity
TEntity

De oorspronkelijke waarden van de entiteit die moeten worden gekoppeld.

Implementeringen

Opmerkingen

Gebruik de Attach methoden met entiteiten die zijn gemaakt in één DataContext, geserialiseerd naar een client en vervolgens gedeserialiseerde back-ups om een update- of verwijderbewerking uit te voeren. Omdat de nieuwe DataContext geen manier heeft om bij te houden wat de oorspronkelijke waarden waren voor een niet-verbonden entiteit, is de client verantwoordelijk voor het opgeven van deze waarden. In deze versie van Attachwordt ervan uitgegaan dat de entiteit de oorspronkelijke waardestatus heeft. Nadat u deze methode hebt aangeroepen, kunt u vervolgens de velden bijwerken, bijvoorbeeld met aanvullende gegevens die van de client worden verzonden.

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.

Probeer geen entiteit die Attach niet is losgekoppeld via serialisatie. Entiteiten die niet zijn geserialiseerd, onderhouden nog steeds koppelingen met uitgestelde laadfuncties die onverwachte resultaten kunnen veroorzaken als de entiteit wordt bijgehouden door een tweede gegevenscontext.

Van toepassing op

Attach(TEntity, Boolean)

Koppelt een entiteit aan de DataContext entiteit in een gewijzigde of ongewijzigde status.

public:
 void Attach(TEntity entity, bool asModified);
public void Attach(TEntity entity, bool asModified);
member this.Attach : 'Entity * bool -> unit
Public Sub Attach (entity As TEntity, asModified As Boolean)

Parameters

entity
TEntity

De entiteit die moet worden gekoppeld.

asModified
Boolean

true om de entiteit als gewijzigd te koppelen; false als u de entiteit als ongewijzigd wilt koppelen.

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.

Van toepassing op

Attach(TEntity, TEntity)

Koppelt een entiteit aan de DataContext entiteit in een gewijzigde of ongewijzigde status door zowel de entiteit als de oorspronkelijke staat op te geven.

public:
 void Attach(TEntity entity, TEntity original);
public void Attach(TEntity entity, TEntity original);
member this.Attach : 'Entity * 'Entity -> unit
Public Sub Attach (entity As TEntity, original As TEntity)

Parameters

entity
TEntity

De entiteit die moet worden gekoppeld.

original
TEntity

Een exemplaar van hetzelfde entiteitstype met gegevensleden die de oorspronkelijke waarden bevatten.

Voorbeelden

using (Northwnd db2 = new Northwnd(@"c:\northwnd.mdf"))
{
    Customer Cust_File = new Customer();
    string xmlFile = "";

    // Get the original object from the deserializer.
    Customer c = SerializeHelper.Deserialize<Customer>
        (xmlFile, Cust_File);

    // Set all the desired properties to the entity to be attached.
    Customer c_updated = new Customer() { CustomerID = c.CustomerID,
        Phone = "425-123-4567", CompanyName = "Microsoft" };
    db2.Customers.Attach(c_updated, c);

    // Perform last minute updates, which will still take effect.
    c_updated.Phone = "425-765-4321";

    // SubmitChanges()sets the phoneNumber and CompanyName of
    // customer with customerID=Cust. to "425-765-4321" and
    // "Microsoft" respectively.
    db2.SubmitChanges();
}
Using db = New Northwnd("...")
    Dim Cust_File As New Customer()
    Dim xmlFile As String = ""

    'Get the original object from the deserializer.
    Dim c As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFile, Cust_File)

    ' Set all the desired properties to the entity to be attached.
    Dim c_updated As New Customer With {.CustomerID = c.CustomerID, _
    .Phone = "425-123-4567", .CompanyName = "Microsoft"}
    db.Customers.Attach(c_updated, c)

    ' Perform last minute updates, which will still take effect. 
    c_updated.Phone = "425-765-4321"

    ' SubmitChanges()sets the phoneNumber and CompanyName of
    ' customer with customerID=Cust. to "425-765-4321" and
    ' "Microsoft" respectively.
    db.SubmitChanges()
End Using

Opmerkingen

In het volgende voorbeeld is het Customer object al correct geconfigureerd. U kunt bellen Attach zonder dat u de updates opnieuw hoeft af te spelen.

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.

Van toepassing op