Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191

    [ASP.NET MVC 3 Entity Framework] Aggiornare database da Modello

    Ho un'applicazione in aso.net mvc 3 basata su entity framework

    Per la creazione del database utilizzo DropCreateDatabaseIfModelChanges<DatabaseContext>

    questo mi rimane perfetto per la prima volta che lo utilizzo ...


    ma poi se inserisco dei dati nel database e ho necessita di modificare lo schema del database quando rieseguo l'applicazione essa mi ricrea il database cancellandomi tutti i dati che avevo salvato all'interno ...

    è possibile effettuare un aggiornamento del database in modo tale che i dati non vengano persi o devo farlo manualmente??

    Grazie in anticipo

  2. #2
    Devi farlo manualmente perché quando cambi il modello il db viene distrutto e ricreato con le modifiche apportate. Di conseguenza perdi tutti i dati che avevi precedentemente inserito. Ma c'è il modo di reinserire tutti i dati facendo l'ovverride del metodo Seed dell'oggetto DropCreateDatabaseIfModelChanges.
    Ovviamente prima i dati vanno salvati in un file o in un databse di appoggio e poi nel metodo Seed inserisci la logica per copiare i dati di backup sul db che è stato appena ricreato.
    C'è un ottimo video che ti consiglio di vedere : http://www.pluralsight-training.net/...net-mvc3-intro
    Una volta che ti compare la pagina con il video sulla sinistra trovi un menu. Clicca su "When classes change". Ti va vedere la parte di video dove viene appunto fatto l'override del metodo Seed per inserire rimepire il db con dei dati dopo essere stato appena creato.
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  3. #3
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191
    Grazie mille per l'aiuto ...

    Ma come faccio a dirgli di salvare i dati prima di eliminare il database??

    esiste un metodo che viene richiamato o devo fare l'override di qualche metodo??

  4. #4
    Sinceramente non lo so se esiste un evento che viene scatenato prima che il db venga rigenerato. Quando stai per cambiare il modello da codice ( che quindi porta poi alla rigenerazione del db ) ti consiglio di salvare i dati in un file. Poi con il metodo Seed di cui abbiamo parlato nel precedente post recuperi i dati da qul file di backup che hai generato.
    Oppure sempilcemente fai una copia di backup del db e poi tarmite sql managment studio copi i dati da uno verso l'altro.
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  5. #5
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191
    però se io utilizzo il metodo DropCreateDatabaseIfModelChanges lui automaticamente quando lancio l'applicazione e vede che la struttura del database è cambiata mi elimina il database e lo ricrea senza darmi il tempo di farmi un salvataggio dei dati ...

    Io vorrei fare in modo che quando modifico lo schema delle tabelle e lui si accorge, o mi chiede se voglio farmi un salvataggio dei dati oppure lo fa da solo e poi li reimporto io...


    è possibile implementare una funzione del genere???

  6. #6
    Sinceramente non te lo so dire con esattezza. Magari nell'oggetto DropCreateDatabaseIfModelChanges c'è un evento tipo ( sto inventando giusto per dare un' idea ) "onBeforeDropdb". Prova a guardare la documentazione su msdn.
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  7. #7
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191
    Gli unici eventi presenti sono:

    public void InitializeDatabase(TContext context)
    protected virtual void Seed(TContext context)


  8. #8
    Si ma non vedo perché tu debba ricreare ogni volta il database.
    Entity framework code first serve per mappare le tabelle del db con le classi che rappresentano il modello. Una volta che uno si rende conto che il modello prodotto ( cioè che i campi e le tabelle create rappresentano bene i dati su cui lavorare ) le classi e il db non li dvi più toccare.
    Di fatti quando poi il progetto va sul server di produzione l'inizializzazione che fai con DropCreateDatabaseIfModelChanges e i suoi metodi va proprio eliminata dal codice. Serve sono il fase di sviluppo.
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.