Table<TEntity>.Attach Yöntem

Tanım

öğesine DataContextbir varlık ekler.

Aşırı Yüklemeler

Name Description
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)

'a DataContext değiştirilmiş veya değiştirilmemiş durumda bir varlık 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

Attach bir içinde oluşturulmuşDataContext, bir istemciye seri hale getirilmiş ve ardından seri durumdan çıkarılmış varlıklarla (güncelleştirme veya silme işlemi gerçekleştirmek amacıyla) 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ığa çalışmayın 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 korur.

Yeni bir varlık eklendiğinde, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. 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. Örneğin:

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ı Attach , Employee hem ana hem de alt öğeyle ilişkileri olduğundan Employee ekli olarak çalışan, ana ve alt öğeyi ekler. İliştirilmiş olan durumu eklendi 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 seri hale getirilmiş ve ardından güncelleştirme veya silme işlemi gerçekleştirmek için seri durumdan çıkarılmış bir içinde oluşturulmuş DataContextvarlıklarla yöntemleri kullanın. Yeninin DataContext bağlantısı kesilmiş bir varlık için özgün değerleri 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, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. 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ığa çalışmayın 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 korur.

Şunlara uygulanır

Attach(TEntity, Boolean)

'a DataContext değiştirilmiş veya değiştirilmemiş durumda bir varlık 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ştirildiği gibi ekleniyorsa, varlığın bir sürüm üyesi bildirmesi veya güncelleştirme çakışması denetimine katılmaması gerekir. Yeni bir varlık eklendiğinde, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. 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, tüm alt koleksiyonlar (örneğin, EntitySet ilişkili tablolardaki varlık koleksiyonları) için ertelenen yükleyiciler başlatılır. Çağrıldığında SubmitChanges , alt koleksiyonların üyeleri bir Unmodified duruma alınır. Bir alt koleksiyonun üyelerini güncelleştirmek için bu varlığı açıkça çağırmanız Attach ve belirtmeniz gerekir.

Şunlara uygulanır