Je dois importer environ 30k lignes à partir d'un fichier CSV vers ma base de données SQL, cela prend malheureusement 20 minutes.Comment accélérer DbSet.Add()?
Dépannage avec un profileur me montre que DbSet.Add prend le plus de temps, mais pourquoi?
J'ai ces Entity Framework code-Premières classes:
public class Article
{
// About 20 properties, each property doesn't store excessive amounts of data
}
public class Database : DbContext
{
public DbSet<Article> Articles { get; set; }
}
Pour chaque élément dans ma boucle que je fais:
db.Articles.Add(article);
En dehors de la boucle que je fais:
db.SaveChanges();
Il est connecté avec mon serveur SQLExpress local, mais je suppose qu'il n'y a rien écrit jusqu'à ce que Sav eChanges est appelé donc je suppose que le serveur ne sera pas le problème ....
Bonjour. Vous êtes-vous débarrassé de Entity Framework ou avez-vous utilisé sqlbulkcopy avec EF? J'obtiens exactement le même problème avec .Add() –
Si vous définissez ceux-ci: 'db.Configuration.ValidateOnSaveEnabled = false; db.Configuration.AutoDetectChangesEnabled = false; ' Il y a un énorme gain de performance. Vous devez être sûr de vos valeurs difficiles. –
Utilisez les guillemets (') pour le code dans les commentaires. Regarde intéressant, je regarderai dans ces propriétés plus tard ... –