Ho un progetto di sito web interno per la mia azienda. Uso MVC5 con Entity Framework 6 in un progetto Code First.
È una Intranet per la mia azienda, quindi voglio due database. 1 in produzione (rilascio). 1 in dev (Debug).
Ho modificato i file Web.config, Web.Debug.config e Web.Release.config in questo modo:
web.Config
<connectionStrings>
<add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=Intranet;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"/>
</connectionStrings>
Web.Debug.Config
<connectionStrings>
<add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=Intranet;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Web.Release.config
<connectionStrings>
<add name="Connexion" connectionString="Data Source=[MYSQLSERVER];Initial Catalog=IntranetRelease;Persist Security Info=True;User ID=[MYUSER];Password=[MYPASS]" providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
Quando distribuisco il mio progetto utilizzando Web Deploy in release mod, tutto il lavoro è fatto e il Web.Config finale ha un buon valore IntranetRelease
per il catalogo.
Il mio problema è che il mio sito non funziona perché il database IntranetRelease
non viene aggiornato dal database Intranet
.
Ho realizzato una copia perfetta di Intranet
e creato manualmente IntranetRelease
. Funziona ma non posso farlo quando i popoli useranno il sito Web perché tutti i dati saranno sul database IntranetRelease
.
Ho provato nel mio progetto a fare un Add-Migration xxx
in modalità di rilascio, ma non cambia nulla.
L'obiettivo è questo:
Quando l'intranet di rilascio è in funzione, lavoro sul database di sviluppo. Quando tutte le mie modifiche sono buone per fare un rilascio, voglio distribuire una nuova versione con Web Deploy e do something
per aggiornare il database IntranetRelease
con le mie modifiche senza perdere alcun dato su di esso.
Grazie per l'aiuto e scusa per il mio povero inglese.
Puoi utilizzare le Migrazioni per questo, ma devi essere consapevole di ciò che effettivamente fa una Migrazione.
Quindi avete due database Dev e Release, dove Dev Database ha lo stato corrente e il database di rilascio ha uno stato probabilmente più vecchio di quello.
Si crea una migrazione su Dev-Database e quindi si esegue il codice nel database di rilascio (si consiglia di non eseguire questa operazione dal sito Web, poiché richiede i diritti per l'utilizzo di ddl-commands). È possibile ottenere questo ad esempio eseguendo un programma di console, che controlla e aggiorna il database.
Quindi, come farlo in alcuni semplici passaggi:
Usa le funzioni Su () e Giù () per preservare i Dati durante una Migrazione (EF rileverà, se perdi i dati e ti avviserà)
Per ulteriori informazioni sull'argomento, visitare http://msdn.microsoft.com/en-us/data/jj591621.aspx