Aracılığıyla paylaş


Table<TEntity>.Attach Yöntem

Tanım

öğ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 AttachDataContextseri 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 AttachDataContextseri 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.

Şunlara uygulanır