Udostępnij za pośrednictwem


Table<TEntity>.Attach Metoda

Definicja

Dołącza jednostkę do obiektu DataContext.

Przeciążenia

Attach(TEntity)

Dołącza odłączony lub "odłączony" jednostkę do nowej DataContext , gdy oryginalne wartości są wymagane do sprawdzania optymistycznej współbieżności.

Attach(TEntity, Boolean)

Dołącza jednostkę do obiektu DataContext w stanie zmodyfikowanym lub niezmodyfikowanym.

Attach(TEntity, TEntity)

Dołącza jednostkę do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym przez określenie zarówno jednostki, jak i stanu pierwotnego.

Uwagi

Attach Użyj metod z jednostkami, które zostały utworzone w jednym DataContext, serializowany do klienta, a następnie deserializowany z powrotem (z zamiarem wykonania operacji aktualizacji lub usuwania). Aby uzyskać więcej informacji, zobacz Operacje pobierania danych i cud w aplikacjach N-warstwowych (LINQ to SQL).

Nie próbuj próbować Attach jednostki, która nie została odłączona przez serializacji. Jednostki, które nie zostały serializowane, nadal utrzymują skojarzenia z odroczonymi modułami ładujących, które mogą powodować nieoczekiwane wyniki, jeśli jednostka zostanie śledzona przez drugi kontekst danych.

Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Attach Dołącza wszystkie jednostki na grafie obiektu podanego obiektu. Na przykład:

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  

Wywołanie metody przy Employee dołączaniu Attach pracownika, wzorca i elementu podrzędnego, ponieważ Employee ma relacje zarówno z elementem nadrzędnym, jak i podrzędnym. Należy jawnie wywołać InsertOnSubmit metodę , aby zmienić stan z dołączonego do wstawionego.

Attach(TEntity)

Dołącza odłączony lub "odłączony" jednostkę do nowej DataContext , gdy oryginalne wartości są wymagane do sprawdzania optymistycznej współbieżności.

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

Oryginalne wartości jednostki do dołączenia.

Implementuje

Uwagi

Attach Użyj metod z jednostkami, które zostały utworzone w jednym DataContext, serializowany do klienta, a następnie deserializowany z powrotem, aby wykonać operację aktualizacji lub usuwania. Ponieważ nowy DataContext nie ma możliwości śledzenia oryginalnych wartości dla odłączonej jednostki, klient jest odpowiedzialny za dostarczanie tych wartości. W tej wersji przyjmuje Attachsię, że jednostka jest w stanie oryginalnej wartości. Po wywołaniu tej metody można zaktualizować jej pola, na przykład przy użyciu dodatkowych danych wysyłanych z klienta.

Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Aby uzyskać więcej informacji, zobacz Operacje pobierania danych i cud w aplikacjach N-warstwowych (LINQ to SQL).

Nie próbuj próbować Attach jednostki, która nie została odłączona przez serializacji. Jednostki, które nie zostały serializowane, nadal utrzymują skojarzenia z odroczonymi modułami ładujących, które mogą powodować nieoczekiwane wyniki, jeśli jednostka zostanie śledzona przez drugi kontekst danych.

Dotyczy

Attach(TEntity, Boolean)

Dołącza jednostkę do obiektu DataContext w stanie zmodyfikowanym lub niezmodyfikowanym.

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

Jednostka, która ma zostać dołączona.

asModified
Boolean

true w celu dołączenia jednostki jako zmodyfikowanej; false aby dołączyć jednostkę jako niezmodyfikowaną.

Uwagi

W przypadku dołączania jako zmodyfikowanego jednostka musi zadeklarować element członkowski wersji lub nie może uczestniczyć w sprawdzaniu konfliktów aktualizacji. Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Dotyczy

Attach(TEntity, TEntity)

Dołącza jednostkę do DataContext obiektu w stanie zmodyfikowanym lub niezmodyfikowanym przez określenie zarówno jednostki, jak i stanu pierwotnego.

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

Jednostka, która ma zostać dołączona.

original
TEntity

Wystąpienie tego samego typu jednostki z elementami członkowskimi danych, które zawierają oryginalne wartości.

Przykłady

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

Uwagi

W poniższym przykładzie Customer obiekt jest już poprawnie skonfigurowany. Możesz wywołać metodę Attach bez konieczności ponownego odtwarzania aktualizacji.

Po dołączeniu nowej jednostki inicjowane są odroczone moduły ładujących dla wszystkich kolekcji podrzędnych (na przykład EntitySet kolekcje jednostek ze skojarzonych tabel). Po SubmitChanges wywołaniu elementy członkowskie kolekcji podrzędnych są umieszczane w Unmodified stanie . Aby zaktualizować elementy członkowskie kolekcji podrzędnej, należy jawnie wywołać Attach i określić jednostkę.

Dotyczy