Quello che mi piace fare è incorporare lo script SQL come risorsa nell'assieme e utilizzare il metodo SqlResource
. Ho testato questo approccio con Visual Studio 2017 15.5.6.
In primo luogo è necessario creare un file di migrazione:
- In Visual Studio assicurarsi di impostare come avvio del progetto del progetto in cui è definito il tuo
DbContext
- In Visual Studio aprire il PMC: Visualizza -> altre finestre -> Console di Package manager
- In PMC Impostare il progetto predefinito per il progetto che contiene il DbContext
Se si dispone sia di base EF e EF 6.x installati:
EntityFramework\Add-Migration RunSqlScript
Se avete solo EF 6.x installata:
Add-Migration RunSqlScript
aggiungere uno script SQL nella cartella di migrazione (nomino con lo stesso prefisso come la migrazione File)
In th La finestra delle proprietà del file si assicura che l'azione di compilazione sia "Risorsa incorporata" Si noti che non è necessario copiare nella cartella di output poiché lo script sql verrà incorporato nell'assembly.
Aggiornare il metodo di Up in the RunSqlScript
migrazione
public override void Up()
{
string sqlResName = typeof(RunSqlScript).Namespace + ".201801310940543_RunSqlScript.sql";
this.SqlResource(sqlResName);
}
Spero che questo aiuta
fonte
2018-01-31 09:55:47
Questo funziona come per magia per me. Ho ulteriormente studiato e ho scoperto che possiamo aggiungere procedure memorizzate pre-create con questo utilizzando il codice seguente. var sqlFile = Path.Combine (AppDomain.CurrentDomain.BaseDirectory, @ "Custom.sql"); Sql (File.ReadAllText (SQLFile)); –
Aggiungerò anche la mia risposta. – Rikard
Dove collochi i tuoi file SQL nel progetto in modo da poterli afferrare in fase di runtime? 'Path.Combine (AppDomain.CurrentDomain.BaseDirectory' mi mette nella directory di debug. – webworm