Table<TEntity>.Attach Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ę.