Table<TEntity>.AttachAll 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.
Bir koleksiyonun tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext ekler.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>) |
Bir koleksiyonun tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext ekler. |
| AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) |
Bir koleksiyonun tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext ekler. |
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.
Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)
Bir koleksiyonun tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext ekler.
public:
generic <typename TSubEntity>
where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities);
public void AttachAll<TSubEntity>(System.Collections.Generic.IEnumerable<TSubEntity> entities) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity))
Tür Parametreleri
- TSubEntity
Eklenecek varlık türü.
Parametreler
- entities
- IEnumerable<TSubEntity>
Varlık koleksiyonu.
Açıklamalar
Bu yöntem, bir koleksiyonun tüm varlıklarını yeni DataContextbir öğesine ekler. 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).
Şunlara uygulanır
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)
Bir koleksiyonun tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine DataContext ekler.
public:
generic <typename TSubEntity>
where TSubEntity : TEntity void AttachAll(System::Collections::Generic::IEnumerable<TSubEntity> ^ entities, bool asModified);
public void AttachAll<TSubEntity>(System.Collections.Generic.IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity;
member this.AttachAll : seq<#'Entity> * bool -> unit
Public Sub AttachAll(Of TSubEntity As TEntity) (entities As IEnumerable(Of TSubEntity), asModified As Boolean)
Tür Parametreleri
- TSubEntity
Eklenecek varlık türü.
Parametreler
- entities
- IEnumerable<TSubEntity>
Varlık koleksiyonu.
- asModified
- Boolean
true nesnenin bir zaman damgası veya RowVersion üyesi varsa; false özgün değerler iyimser eşzamanlılık denetimi için kullanılıyorsa.
Örnekler
Aşağıdaki örnek, farklı Order bir örnekteki bir DataContext nesneyi nasıl güncelleştirebileceğinizi gösterir. Örnekte bir veritabanıyla bağlantınız olduğu ve bunun için LINQ to SQL dosyası oluşturduğunuz varsayılır (bu örnekte Northwind örnek veritabanı).
using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))
{
// Get original Customer from deserialization.
var q1 = db.Orders.First();
string serializedQ = SerializeHelper.Serialize(q1);
var q2 = SerializeHelper.Deserialize(serializedQ, q1);
// Track this object for an update (not insert).
db.Orders.Attach(q2, false);
// Replay the changes.
q2.ShipRegion = "King";
q2.ShipAddress = "1 Microsoft Way";
// DataContext knows how to update the order.
db.SubmitChanges();
}
Using db As New Northwnd("")
' Get original Customer from deserialization.
Dim q1 = db.Orders.First()
Dim serializedQ As String = SerializeHelper.Serialize(q1)
Dim q2 = SerializeHelper.Deserialize(serializedQ, q1)
' Track this object for an update (not insert).
db.Orders.Attach(q2, False)
' Replay the changes.
q2.ShipRegion = "King"
q2.ShipAddress = "1 Microsoft Way"
' DataContext knows how to update the order.
db.SubmitChanges()
End Using
Aşağıdaki örnekte, eklenecek bir varlık nesnesinin başka bir nesneyle yabancı anahtar ilişkisi vardır ve önbellekte depolanır ancak eklenmez. çağırdığınızda SubmitChanges, ChangeProcessor tüm yabancı anahtar nesneleri için bir Insert işlem ekler. Bu, bir varlık örneği farklı DataContext bir örnekte yeniden kullanıldığında bir yan etkidir. Bu nedenle LINQ to SQL, nesnelerin yeniden kullanılmasını desteklemez.
Customer c = null;
using (Northwnd db = new Northwnd(""))
{
/* Get both the customer c and the customer's order
into the cache. */
c = db.Customers.First();
string sc = c.Orders.First().ShipCity;
}
using (Northwnd nw2 = new Northwnd(""))
{
// Attach customers and update the address.
nw2.Customers.Attach(c, false);
c.Address = "new";
nw2.Log = Console.Out;
/* At SubmitChanges, you will see INSERT requests for all
Customer c’s orders. */
nw2.SubmitChanges();
}
Sub method7()
Dim c As Customer = Nothing
Using db = New Northwnd("...")
' Get both the customer c and the customer's order
' into the cache.
c = db.Customers.First()
Dim sc = c.Orders.First().ShipCity
End Using
Using nw2 = New Northwnd("...")
' Attach customers and update the address.
nw2.Customers.Attach(c, False)
c.Address = "new"
nw2.Log = Console.Out
' At SubmitChanges, you will see INSERT requests for all
' c's orders.
nw2.SubmitChanges()
End Using
Aşağıdaki örnekte, A Müşterisinin tüm siparişleri iptal ettiği ve B Müşterisinin bunların sahipliğini aldığı bir senaryo gösterilmektedir. Müşteri A'nın tüm siparişlerini aynı anda ekleyebilirsiniz.
Customer CustA_File = new Customer();
Customer CustB_File = new Customer();
string xmlFileA = "";
string xmlFileB = "";
// Get the serialized objects.
Customer A = SerializeHelper.Deserialize<Customer>(xmlFileA, CustA_File);
Customer B = SerializeHelper.Deserialize<Customer>(xmlFileB, CustB_File);
List<Order> AOrders = A.Orders.ToList();
using (Northwnd db = new Northwnd(@"c:\northwnd.mdf"))
{
//Attach all the orders belonging to Customer A all at once.
db.Orders.AttachAll(AOrders, false);
// Update the orders belonging to Customer A to show them
// as owned by Customer B.
foreach (Order o in AOrders)
{
o.CustomerID = B.CustomerID;
}
// DataContext can now apply the change of ownership to
// the database.
db.SubmitChanges();
}
Dim custA_File = New Customer()
Dim custB_File = New Customer()
Dim xmlFileA As String = ""
Dim xmlFileB As String = ""
' Get the serialized objects.
Dim A As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileA, custA_File)
Dim B As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFileB, custB_File)
Dim AOrders As List(Of Order) = A.Orders.ToList()
Using db As New Northwnd("...")
'Attach all the orders belonging to Customer A all at once.
db.Orders.AttachAll(AOrders, False)
' Update the orders belonging to Customer A to show them
' as owned by Customer B
For Each o In AOrders
o.CustomerID = B.CustomerID
Next
' DataContext can now apply the change of ownership to
'the database
db.SubmitChanges()
End Using
Açıklamalar
Bu yöntem, bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler. Değiştirildiği gibi ekleniyorsa, varlığın bir sürüm üyesi bildirmesi veya güncelleştirme çakışması denetimine katılmaması gerekir. Değiştirilmemiş olarak ekleniyorsa, varlığın özgün değeri temsildiği varsayılır. Bu yöntem çağrıldıktan sonra, varlığın alanları çağrılmadan önce SubmitChanges istemciden gelen diğer bilgilerle değiştirilebilir. Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).
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.