Jazyk

Table<TEntity>.Attach Metoda

Definice

Připojí entitu k objektu DataContext.

Přetížení

Name Description
Attach(TEntity)

Připojí odpojenou nebo odpojenou entitu k nové DataContext , pokud jsou pro kontroly optimistické souběžnosti vyžadovány původní hodnoty.

Attach(TEntity, Boolean)

Připojí entitu DataContext k upravenému nebo nemodifikovanému stavu.

Attach(TEntity, TEntity)

Připojí entitu DataContext k upravenému nebo nemodifikovanému stavu zadáním entity i jejího původního stavu.

Poznámky

Attach Použijte metody s entitami, které byly vytvořeny v jednom DataContext, serializován na klienta, a poté deserializován zpět (s úmyslem provést aktualizaci nebo odstranění operace). Další informace naleznete v tématu Načítání dat a operace CUD v N-vrstvých aplikacích (LINQ to SQL).

Nepokoušejte se entitu Attach , která nebyla odpojena prostřednictvím serializace. Entity, které nebyly serializovány, stále udržují přidružení s odloženými zavaděči, které můžou způsobit neočekávané výsledky, pokud se entita bude sledovat pomocí druhého kontextu dat.

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.

Attach připojí všechny entity v grafu objektu poskytnutého objektu. Příklad:

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

Volání Attach na Employee připojení zaměstnance, hlavního a podřízeného, protože Employee má vztahy s hlavním i podřízeným. Je nutné explicitně volat InsertOnSubmit , abyste změnili stav z připojeného na vložený.

Attach(TEntity)

Připojí odpojenou nebo odpojenou entitu k nové DataContext , pokud jsou pro kontroly optimistické souběžnosti vyžadovány původní hodnoty.

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)

Parametry

entity
TEntity

Původní hodnoty entity, která se má připojit.

Implementuje

Poznámky

Attach Použijte metody s entitami, které byly vytvořeny v jednom DataContext, serializovány na klienta a pak deserializovány zpět k provedení operace aktualizace nebo odstranění. Vzhledem k tomu, že nový DataContext nemá žádný způsob, jak sledovat, jaké původní hodnoty byly pro odpojenou entitu, je klient zodpovědný za poskytnutí těchto hodnot. V této verzi Attachse předpokládá, že entita je v původním stavu hodnoty. Po volání této metody můžete aktualizovat její pole, například s dalšími daty odeslanými z klienta.

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).

Nepokoušejte se entitu Attach , která nebyla odpojena prostřednictvím serializace. Entity, které nebyly serializovány, stále udržují přidružení s odloženými zavaděči, které můžou způsobit neočekávané výsledky, pokud se entita bude sledovat pomocí druhého kontextu dat.

Platí pro

Attach(TEntity, Boolean)

Připojí entitu DataContext k upravenému nebo nemodifikovanému stavu.

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)

Parametry

entity
TEntity

Entita, která se má připojit.

asModified
Boolean

true připojit entitu podle změny; false a připojte entitu jako neupravenou.

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.

Platí pro

Attach(TEntity, TEntity)

Připojí entitu DataContext k upravenému nebo nemodifikovanému stavu zadáním entity i jejího původního stavu.

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)

Parametry

entity
TEntity

Entita, která se má připojit.

original
TEntity

Instance stejného typu entity s datovými členy, které obsahují původní hodnoty.

Příklady

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

Poznámky

V následujícím příkladu Customer je objekt již správně nakonfigurovaný. Můžete volat Attach , aniž byste museli znovu přehrávat aktualizace.

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.

Platí pro