Je fais comme ceci:est-il correct d'utiliser plinq ForAll pour une insertion en masse dans la base de données?
entities.AsParallel().ForAll(o => repository.Insert(o));
Est-ce bon, vais-je avoir plus de performance avec cela?
Je fais comme ceci:est-il correct d'utiliser plinq ForAll pour une insertion en masse dans la base de données?
entities.AsParallel().ForAll(o => repository.Insert(o));
Est-ce bon, vais-je avoir plus de performance avec cela?
No.
Celui-ci peut être plus rapide, car il tire parti de l'paralellism à SQL, mais à la fin SQL doit faire un verrou pour la table (page), comme il est un insert. donc chaque requête parallèle est à nouveau exécutée après une autre.
Si vous souhaitez créer un encart groupé, créez un SP en acceptant toutes les entrées (par exemple, une table avec SQL 2008.) ou faites-le avec Linq2SQL.
ce serait la bonne solution de conception.
Probablement pas. Chaque insertion prendrait place sur un thread séparé, tandis que l'insert en vrac fonctionne bien en transférant de grandes quantités de données à partir d'un seul thread, à la fois. PS: SqlBulkCopy fonctionnerait beaucoup, beaucoup mieux qu'un insert parallèle. Utilisez cela si possible.