Table<TEntity>.Attach Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
öğesine bir varlık DataContextekler.
Aşırı Yüklemeler
Attach(TEntity) |
İyimser eşzamanlılık denetimleri için özgün değerler gerektiğinde, bağlantısı kesilmiş veya "ayrılmış" bir varlığı yeni DataContext bir varlığa ekler. |
Attach(TEntity, Boolean) |
öğesine değiştirilmiş veya değiştirilmemiş durumda bir varlık DataContext ekler. |
Attach(TEntity, TEntity) |
Hem varlığı DataContext hem de özgün durumunu belirterek değiştirilmiş veya değiştirilmemiş durumda öğesine bir varlık ekler. |
Açıklamalar
Bir istemcide Attach
DataContextseri hale getirilmiş ve sonra seri durumdan çıkarılmış (güncelleştirme veya silme işlemi gerçekleştirmek amacıyla) içinde oluşturulmuş varlıklarla yöntemleri kullanın. Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).
Serileştirme aracılığıyla ayrılmamış bir varlığı denemeyin Attach
. Serileştirilmemiş varlıklar, varlığın ikinci bir veri bağlamı tarafından izlenmesi durumunda beklenmeyen sonuçlara neden olabilecek ertelenmiş yükleyicilerle ilişkilendirmeleri sürdürmeye devam eder.
Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet
ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified
duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach
ve belirtmeniz gerekir.
Attach
sağlanan nesnenin nesne grafiğindeki tüm varlıkları ekler. Örnek:
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
çağrısında Attach
çalışan, ana ve alt öğe çağrılır, çünkü Employee
hem ana hem de alt öğeyle ilişkileri Employee
vardır. İliştirilmiş olan durumu eklenen olarak değiştirmek için açıkça aramanız InsertOnSubmit
gerekir.
Attach(TEntity)
İyimser eşzamanlılık denetimleri için özgün değerler gerektiğinde, bağlantısı kesilmiş veya "ayrılmış" bir varlığı yeni DataContext bir varlığa ekler.
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)
Parametreler
- entity
- TEntity
Eklenecek varlığın özgün değerleri.
Uygulamalar
Açıklamalar
Bir istemcide Attach
DataContextseri hale getirilmiş ve ardından güncelleştirme veya silme işlemi gerçekleştirmek için seri durumdan çıkarılmış varlıklarla yöntemleri kullanın. Yeni DataContext , bağlantısı kesilmiş bir varlık için özgün değerlerin ne olduğunu izlemenin bir yolu olmadığından, istemci bu değerleri sağlamakla sorumludur. öğesinin bu sürümünde varlığın Attachözgün değer durumunda olduğu varsayılır. Bu yöntemi çağırdıktan sonra, örneğin istemciden gönderilen ek verilerle alanlarını güncelleştirebilirsiniz.
Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet
ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified
duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach
ve belirtmeniz gerekir.
Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).
Serileştirme aracılığıyla ayrılmamış bir varlığı denemeyin Attach
. Serileştirilmemiş varlıklar, varlığın ikinci bir veri bağlamı tarafından izlenmesi durumunda beklenmeyen sonuçlara neden olabilecek ertelenmiş yükleyicilerle ilişkilendirmeleri sürdürmeye devam eder.
Şunlara uygulanır
Attach(TEntity, Boolean)
öğesine değiştirilmiş veya değiştirilmemiş durumda bir varlık DataContext ekler.
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)
Parametreler
- entity
- TEntity
Eklenecek varlık.
- asModified
- Boolean
true
varlığı değiştirilmiş olarak eklemek için; false
varlığı değiştirilmemiş olarak eklemek için.
Açıklamalar
Değiştirme olarak iliştirilirse, varlık bir sürüm üyesi bildirmeli veya güncelleştirme çakışma denetimine katılmamalıdır. Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet
ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified
duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach
ve belirtmeniz gerekir.
Şunlara uygulanır
Attach(TEntity, TEntity)
Hem varlığı DataContext hem de özgün durumunu belirterek değiştirilmiş veya değiştirilmemiş durumda öğesine bir varlık ekler.
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)
Parametreler
- entity
- TEntity
Eklenecek varlık.
- original
- TEntity
Özgün değerleri içeren veri üyeleriyle aynı varlık türünün örneği.
Örnekler
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
Açıklamalar
Aşağıdaki örnekte, Customer
nesne zaten doğru yapılandırılmıştır. Güncelleştirmeleri yeniden oynatmak zorunda kalmadan arayabilirsiniz Attach
.
Yeni bir varlık eklendiğinde, herhangi bir alt koleksiyon için ertelenen yükleyiciler (örneğin, EntitySet
ilişkili tablolardaki varlık koleksiyonları) başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified
duruma geçirilir. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach
ve belirtmeniz gerekir.