Toplu/toplu ekin nasıl yapılır hakkında Linq - Varlıkları kullanarak herhangi bir örnek bulamıyorum. Toplu Ekle nasıl yapılır biliyor musunuz?Nasıl Dökme Ekleme - Varlıklara Linq
cevap
Bazen sadece modelleri karıştırmanız gerekir. Deponuzun bu kısmı için SqlBulkCopy
kullanın (bu, doğrudan toplu kopyalama API'sine takılı olduğundan) ve diğerlerinin bir kısmı için Varlık Çerçevesi. Ve gerekirse, biraz ADO.NET. Nihayetinde amaç işin yapılmasıdır.
LINQ ile Varlıklar arasında toplu eklerin nasıl yapılacağına dair mükemmel bir örnek için bkz. http://archive.msdn.microsoft.com/LinqEntityDataReader. SqlBulkCopy'nin kolay kullanımını sağlayan bir sarıcıdır.
@Marc Gravell doğru, bazen işi tamamlamak için modelleri karıştırmanız gerekir.
EF varlıklarını (veya özellik adlarının sütun adlarıyla eşleştiği sürece herhangi bir nesne) toplu olarak yerleştirecek bir sınıf yazdım.
Sınıf, toplu boyutun özelleştirilmesini destekler, önce & posta ekleme olayları, sıraya eklenen ekler ve "firehose modu" (bunu milyar bir nesne verin, yığın boyutuna uygun olacaktır).
- kodu:
BulkInserter<T>
- How to use it
bir veritabanında veri büyük miktarda ekleyerek, ben bir liste halinde bütün takmadan bilgi toplamak ve bir DataTable
Bu listeyi dönüştürmek için kullanılabilir. Sonra bu listeyi SqlBulkCopy
aracılığıyla bir veritabanına ekliyorum. Benim oluşturulan listesini gönderin
Ben veritabanına
için takıp InsertData
public static void InsertData<T>(List<T> list,string TabelName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TabelName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
olan Toplu ekleme işlemi
InsertData(LiMyList, "MyTable");
onu geçmek isteyen tüm toplu verilerin bilgi içeren LiMyList
Maksimum performans elde etmek için SqlBulkCopy ve özel veri okuyucuyu kullanır. Sonuç olarak düzenli insert veya efbulkinsert uzantısını kullanarak AddRange
örneği kullanılarak 20'den üzerinde kat daha hızlı olduğunu:
context.BulkInsert(hugeAmountOfEntities);
THIS harika bir kütüphanedir. SqlBulkCopy şeylerini daha önce sıfırdan yazdım ama bu çok daha kolay ve hızlı – Andrew
- 1. Linq (varlıklara) ile belirgin yıl-aylar
- 2. Linq varlıklara Sol Ben varlıkları Linq aşağıdaki ulaşmak istiyoruz
- 3. LINQ öğelerini varlıklara kullanarak bayt dizisi uzunluğu nasıl alınır?
- 4. Linq'den Varlıklara Gibi
- 5. LINQ'te Varlıklara LEFT JOIN nasıl yapılır?
- 6. Entity Framework - Varlıklara Linq - Çoktan Çok Sorgu Sorunları
- 7. Linq Özel Durum: İşlev yalnızca linq'den varlıklara çağrılabilir
- 8. reinterpret_cast dökme
- 9. LINQ - Ben varlıklara LINQ için sadece belirli sütunları (kodunda statik) alan bir seçme sorgusu oluşturabilirsiniz
- 10. Linq to SQL - Sql varlıklara linq güncellenmesi ile bazı sorunları yaşıyorum
- 11. Genel bir türe dökme
- 12. Güvensiz jenerik dökme
- 13. Düğmeye Dökme Gerekiyor - Neden?
- 14. Roo kabuğundaki varlıklara alanlar nasıl eklenir?
- 15. LINQ: Öğelerin Listesini Başka Bir Listeye Ekleme
- 16. Python sözlüğünü JSON dosyasına dökme
- 17. Linq
- 18. Açısal 2 dökme değer seç
- 19. Sınıf dökme İstisna Android string.xml
- 20. Linq yöntemleri ekleme vs. saklı yordam ekle
- 21. Ben varlıklara Linq kullanıyorum ve sorguladığınızda ben kayıtlarının sınırlı sayıda alabilirsiniz olmadığını bilmek istiyorum varlıkları
- 22. Birleştirme toplamı yoluyla varlıklara erişme: basit örnek?
- 23. PHP: dinamik olarak belirlenmiş bir türe dökme
- 24. Perl: Verileri bir hashtan excel'e dökme
- 25. "Docker pull" olmadan dökme Konteynır görüntü çekimi
- 26. SQL tarafından oluşturulan sınıflara LINQ için yeni yöntemler ekleme
- 27. linq önbellek ve elden çıkarma datacontext
- 28. LINQ
- 29. LINQ
- 30. LINQ
oh kabul etmeyenler - burada buldum ölü linki –
... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs –