Tempo di riscaldamento di sei secondi per la prima entità 6 nonquery

entity-framework entity-framework-6

Domanda

Dal mio test di integrazione:

// Act
Stopwatch w = new Stopwatch();
w.Start();
userService.Create(userDTO);
w.Stop();


public void Create(UserDTO userDTO)
{
    var user = userDTO.ToEntity();
    _context.Entry(user).State = EntityState.Added;
    _context.SaveChanges();
}

6,2 secondi per fare un "sql insert" è pazzesco. Ho già visto gli utenti dell'applicazione lamentarsi quando aprono per la prima volta un progetto che usano tutto l'anno. Quindi ogni giorno devono aspettare 6 secondi ...

Ho pensato che il tempo di riscaldamento nell'EF6 sia migliorato?

C'è qualcosa che posso fare per migliorare questo comportamento miserabile?

Risposta accettata

Prova EF6 CodeFirst Visualizza modello di generazione T4 per C # . Le viste pre-generate migliorano il tempo di avvio dell'applicazione spostando il lavoro che dovrebbe essere eseguito in fase di esecuzione per progettare il tempo. Ulteriori informazioni


Risposta popolare

Il tempo non è speso per inserire un semplice dato. EF crea il modello nella memoria, cioè dove va il tempo trascorso.

EF crea il Modello dati entità ed esegue la Generazione vista (non le viste DB) per la prima volta che si esegue un'operazione sul contesto. Dai un'occhiata a questo post sul blog .

Dai un'occhiata qui per migliorare le prestazioni utilizzando le viste pre-generate per ridurre il tempo di caricamento del modello.

Per migliorare le prestazioni è possibile inizializzare il contesto asincrono all'avvio dell'applicazione. Attenzione ai problemi del multithreading.

using (var context = new MyContext())
{
    context.Database.Initialize(false);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché