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 DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler.
Aşırı Yüklemeler
AttachAll<TSubEntity>(IEnumerable<TSubEntity>) |
Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler. |
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean) |
Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine ekler. |
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.
Daha fazla bilgi için bkz. N Katmanlı Uygulamalarda Veri Alma ve CUD İşlemleri (LINQ to SQL).
AttachAll<TSubEntity>(IEnumerable<TSubEntity>)
Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine 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, 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).
Şunlara uygulanır
AttachAll<TSubEntity>(IEnumerable<TSubEntity>, Boolean)
Bir koleksiyonun DataContext tüm varlıklarını değiştirilmiş veya değiştirilmemiş durumda öğesine 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 örnekte, farklı DataContext bir örnekteki bir Order
nesneyi nasıl güncelleştirebileceğiniz gösterilmektedir. Örnekte, bir veritabanıyla bağlantınız olduğu ve veritabanı için bir LINQ to SQL dosyası yaptığınız 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ımı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üşterisi'nin bunların sahipliğini aldığı bir senaryo gösterilmektedir. A Müşterisinin 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ştirme olarak iliştirilirse, varlık bir sürüm üyesi bildirmeli veya güncelleştirme çakışma denetimine katılmamalıdır. 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, 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.