Je ne trouve aucun exemple sur la façon de faire un encart en masse/en lots en utilisant Linq to Entities. Est-ce que vous savez comment faire un insert en vrac?Comment faire un encart en vrac - Linq to Entities
Répondre
Il suffit parfois de mélanger des modèles. Peut-être utiliser SqlBulkCopy
pour cette partie de votre dépôt (puisque cela se branche directement dans l'API de copie en bloc), et Entity Framework pour certains des autres. Et si nécessaire, un peu d'ADO.NET direct. En fin de compte, l'objectif est de faire le travail.
Pour un exemple parfait de la procédure à suivre pour les insertions groupées avec LINQ to Entities, voir http://archive.msdn.microsoft.com/LinqEntityDataReader. C'est un wrapper qui permet une utilisation facile de SqlBulkCopy.
@Marc Gravell a raison, il faut parfois mélanger des modèles pour faire le travail.
J'ai écrit une classe qui insérera en bloc des entités EF (ou n'importe quel type d'objet tant que les noms de propriété correspondent aux noms de colonnes).
La classe prend en charge la personnalisation de la taille du lot, & après les événements d'insertion, les insertions en file d'attente et le mode «firehose» (donnez-lui un milliard d'objets, elle respecte la taille du lot).
- Le code:
BulkInserter<T>
- How to use it
Pour insérer une énorme quantité de données dans une base de données, j'ai utilisé pour collecter toutes les informations à insérer dans une liste et convertir cette liste en une DataTable
. Je puis insérer cette liste à une base de données via SqlBulkCopy
.
Où j'envoyer ma liste générée LiMyList
qui contiennent des informations de toutes les données en vrac que je veux insérer à la base de données
et le transmettre à mon opération d'insertion en vrac
InsertData(LiMyList, "MyTable");
Où InsertData
est
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;
}
Vous pouvez le faire en utilisant bulk insert extension
Il utilise SqlBulkCopy et le lecteur de données personnalisé pour obtenir des performances maximales. Par conséquent, il est plus de 20 fois plus rapide que l'utilisation régulière d'insertion ou AddRange
Exemple d'utilisation efbulkinsert l'extension:
context.BulkInsert(hugeAmountOfEntities);
Ceci est une bibliothèque impressionnante. J'ai déjà écrit des trucs sur SqlBulkCopy mais c'est tellement plus simple et rapide – Andrew
- 1. sqlite3 encart en vrac de C?
- 2. LINQ to Entities
- 3. LINQ to Entities: Faire la requête en face
- 4. Linq to Entities System.data.Objects
- 5. LINQ to Entities
- 6. OnValidate() et LINQ to Entities
- 7. LINQ to Entities requêtes Oddity
- 8. Linq to Entities - Eager Chargement
- 9. MVC en vrac Edition - LINQ to Sql Enregistrer la liste
- 10. Jointure externe gauche dans Linq-To-Entities
- 11. Linq to Entities et propriétés concaténées
- 12. Problème avec LINQ to Entities et String.StartsWith
- 13. LINQ to Entities: Les expressions lambda
- 14. Linq To Entities Générer de grandes requêtes
- 15. LINQ to Entities et Xml Les champs
- 16. Désireuse chargement et LINQ to Entities
- 17. LINQ to Entities pour soustraire 2 dates
- 18. Dois-je considérer LINQ to Entities?
- 19. Optimize Grouper par dans LINQ to Entities
- 20. Clause "NOT IN" dans LINQ to Entities
- 21. dates distinctes dans LINQ To Entities?
- 22. Comment utiliser flags enums dans les requêtes Linq to Entities?
- 23. Faire des photos dans un encart
- 24. Linq to Entities (EF): Comment obtenir la valeur d'un FK sans faire la jointure
- 25. Linq to Entities - Supprimer d'un lien/table de jonction
- 26. Linq to Entities Vs. Adaptateurs de table (Windows Forms Windows)
- 27. Visualiser le SQL généré à partir de Linq To Entities
- 28. Linq to Entities Left Outer Join/Sous-requête?
- 29. Linq to Entities jointures excessives dans le code SQL généré
- 30. LINQ to Entities: Utilisation de DateTime.AddMonth dans l'expression Lambda
oh NoE - lien mort –
trouvé ici ... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs –