267 messaggi dal 29 settembre 2009
Ciao a tutti,
sto utilizzando EF5 per leggere e scrivere dati da una db. In particolare carico dei dati da un CSV per poi trasferirli sulla db mediante l'EF. Questo è il codice di esempio

           string[] txtStorico = File.ReadAllLines(new_path);

            var q = from line in txtStorico
                    let columns = line.Split("\t".ToCharArray())
                    select new Concorsi
                    {
                        data = DateTime.Parse(columns[0]),
                        nome = columns[1],
                        primo = short.Parse(columns[2]),
                        secondo = short.Parse(columns[3]),
                        terzo = short.Parse(columns[4]),
                        quarto = short.Parse(columns[5]),
                        quinto = short.Parse(columns[6])
                    };

            Concorsi[] _concorsi = q.ToArray<Concorsi>();
//fin qui tutto ok, leggo 50000 record da file in pochissimo tempo (1-2 sec) 
//e creo la lista di oggetti Concorsi da storicizzare mediante EF

            for (int i = 0; i < _concorsi.Length; i++)
                ctx.Concorsi.Add(_concorsi[i]);

//Questo è il for che mi crea problemi!!!!
//impiega moltissimo tempo (parecchi minuti circa 10) ad essere eseguito
// mentre il SaveChange() è anch'esso immediato
                    
            ctx.SaveChanges();


Quello che mi da noia è che in realtà io ho già la lista dei Concorsi a disposizione per l'inserimento ma sono costretto a richiamare il metodo ctx.Concorsi.Add(_concorsi[i]); per ogni elemento della lista.

Ho provato a fare ctx.Concorsi.Concat(q.ToList<Concorsi>())
ma il ctx.SaveChange non vede le nuove entità concatenate

Qualche idea per velocizzare una procedura di inserimento massivo con EF?
59 messaggi dal 17 maggio 2010
Ciao,
hai provato disabilitando l'autoDetect e il ValidateOnSave?

ctx.Configuration.AutoDetectChangesEnabled = false;
ctx.Configuration.ValidateOnSaveEnabled = false;
267 messaggi dal 29 settembre 2009
funziona alla perfezione =)

grazie per l'aiuto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.