Table<TEntity>.Attach Metod

Definition

Kopplar en entitet till DataContext.

Överlagringar

Name Description
Attach(TEntity)

Kopplar en frånkopplad eller "frånkopplad" entitet till en ny DataContext när ursprungliga värden krävs för optimistiska samtidighetskontroller.

Attach(TEntity, Boolean)

Kopplar en entitet till DataContext i ett ändrat eller omodifierat tillstånd.

Attach(TEntity, TEntity)

Kopplar en entitet till DataContext i antingen ett ändrat eller oförändrad tillstånd genom att ange både entiteten och dess ursprungliga tillstånd.

Kommentarer

Attach Använd metoderna med entiteter som har skapats i en DataContext, serialiserad till en klient och sedan deserialiserad tillbaka (med avsikt att utföra en uppdaterings- eller borttagningsåtgärd). Mer information finns i Datahämtning och CUD-åtgärder i N-nivåprogram (LINQ till SQL).

Försök inte till Attach en entitet som inte har kopplats från via serialisering. Entiteter som inte har serialiserats upprätthåller fortfarande associationer med uppskjutna inläsare som kan orsaka oväntade resultat om entiteten spåras av en andra datakontext.

När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.

Attach bifogar alla entiteter i objektdiagrammet för det angivna objektet. Ett exempel:

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

Att anropa AttachEmployee kopplar medarbetare, huvudnamn och underordnad, eftersom har relationer till både huvud- och underordnad Employee . Du måste uttryckligen anropa InsertOnSubmit för att ändra tillståndet från bifogat till infogat.

Attach(TEntity)

Kopplar en frånkopplad eller "frånkopplad" entitet till en ny DataContext när ursprungliga värden krävs för optimistiska samtidighetskontroller.

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)

Parametrar

entity
TEntity

De ursprungliga värdena för den entitet som ska kopplas.

Implementeringar

Kommentarer

Attach Använd metoderna med entiteter som har skapats i en DataContext, serialiserade till en klient och sedan deserialiseras tillbaka för att utföra en uppdaterings- eller borttagningsåtgärd. Eftersom den nya DataContext inte har något sätt att spåra vad de ursprungliga värdena var för en frånkopplad entitet ansvarar klienten för att tillhandahålla dessa värden. I den här versionen av Attachantas entiteten vara i sitt ursprungliga värdetillstånd. När du har anropat den här metoden kan du sedan uppdatera dess fält, till exempel med ytterligare data som skickas från klienten.

När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.

Mer information finns i Datahämtning och CUD-åtgärder i N-nivåprogram (LINQ till SQL).

Försök inte till Attach en entitet som inte har kopplats från via serialisering. Entiteter som inte har serialiserats upprätthåller fortfarande associationer med uppskjutna inläsare som kan orsaka oväntade resultat om entiteten spåras av en andra datakontext.

Gäller för

Attach(TEntity, Boolean)

Kopplar en entitet till DataContext i ett ändrat eller omodifierat tillstånd.

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)

Parametrar

entity
TEntity

Entiteten som ska kopplas.

asModified
Boolean

true för att bifoga entiteten som ändrad; false för att koppla entiteten som oförändrad.

Kommentarer

Om entiteten bifogas som ändrad måste den antingen deklarera en versionsmedlem eller inte delta i kontrollen av uppdateringskonflikter. När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.

Gäller för

Attach(TEntity, TEntity)

Kopplar en entitet till DataContext i antingen ett ändrat eller oförändrad tillstånd genom att ange både entiteten och dess ursprungliga tillstånd.

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)

Parametrar

entity
TEntity

Entiteten som ska kopplas.

original
TEntity

En instans av samma entitetstyp med datamedlemmar som innehåller de ursprungliga värdena.

Exempel

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

Kommentarer

I följande exempel är objektet Customer redan korrekt konfigurerat. Du kan anropa Attach utan att behöva spela upp uppdateringarna igen.

När en ny entitet är ansluten initieras uppskjutna inläsare för alla underordnade samlingar (till exempel EntitySet samlingar med entiteter från associerade tabeller). När SubmitChanges anropas placeras medlemmar i de underordnade samlingarna i ett Unmodified tillstånd. Om du vill uppdatera medlemmar i en underordnad samling måste du uttryckligen anropa Attach och ange den entiteten.

Gäller för