J'essaie de sauvegarder des centaines de milliers d'enregistrements en utilisant le framework Entity. Après avoir enregistré quelques centaines de milliers de dossiers que je reçois l'erreur suivante:System.OutOfMemoryException utilisant Entity Framework?
: System.OutOfMemoryException
Mon code
foreach (BibContent objbibcontents in lstBibContent)
{
db.BibContents.AddObject(objbibcontents);
c = c + 1;
if (c == 1000)
{
db.SaveChanges();
c = 0;
}
}
J'ai remarqué après avoir sauvé 1000 enregistrements ma db ne surchargez pas encore 1000 dossiers. c'est les ajouter dans mon dbcontext.
Je crée une nouvelle instance après 1000 enregistrements mais ma base de données contient toujours les données de l'objet précédent. Voir mon code
foreach (var objbibcontents in lstBibContent)
{
vibrantEntities db1 = new vibrantEntities(szConStr);
lstBibCon.Add(objbibcontents);
// db.BibContents.AddObject(objbibcontents);
c = c + 1;
if (c == 1000)
{
foreach (BibContent bibobject in lstBibCon)
{
db1.BibContents.AddObject(bibobject);
}
lstBibCon.Clear();
db1.SaveChanges();
c = 0;
flag = 1;
}
}
puis-je effacer mon dbcontext plutôt que de créer à nouveau? –
Vous devez aller définir chaque objet ajouté comme détaché. Créer une nouvelle instance de contexte est beaucoup mieux. –