2014-04-09 13 views
5

Ho appena cambiato la mia applicazione dal Database prima al codice prima! Che grande miglioramento nell'implementazione !. Ma ora ho il seguente problema. Ho generato il mio modello Code-first dal mio database, ma dopo aver ricreato il database dal codice generato, le mie viste dal mio database sono generate come tabelle!Generazione di una vista SQL dal codice EF 6.1 prima

Come si generano prima le viste dal codice? e/o mapparli alle mie entità se ho bisogno di generarli manualmente?

MODIFICA.

Il post di Luke McGregor mi ha sicuramente avvicinato. Sì, genera ora le viste. Ma le migrazioni non funzionano.

Quando si tenta di eseguire un'istruzione Update-Database, l'output iniziale è che ci sono ancora modifiche al codice.

Ho quindi eseguito il comando Add-Migration xxx e ho eseguito nuovamente il comando Update-Database.

EDIT 2:

Risolvere alcune differenze tra il mio codice Codice-primo e il codice SQL della vista ha risolto questo problema!

+0

Eventuali duplicati di http://stackoverflow.com/questions/7461265/how-to -use-views-in-code-first-entity-framework –

+0

@CraigW. penso che questa sia una domanda diversa che riguarda la creazione non BAU –

+0

La seconda metà della domanda riguarda la mappatura delle entità alle viste esistenti (ad esempio "e/o mapparle alle mie entità se ho bisogno di generarle manualmente?"), che è quello che dovrà fare. Non riesco nemmeno a capire come il codice genererebbe le viste, ma ha ancora bisogno di una tabella dietro la vista per archiviare/recuperare i dati da. –

risposta

10

Sarà necessario creare una migrazione manuale con qualche SQL prime in esso per esempio qualcosa sulla falsariga del sottostante

public partial class MyMigration: DbMigration 
{ 
    public override void Up() 
    { 
     Sql("CREATE VIEW......"); 
    } 
} 
+3

Utilizzare 'Sql (" EXEC ('CREATE View ....... "' per evitare problemi con problemi "primo in batch". Non è possibile inserire "GO" in una migrazione perché non è un sql comando – Colin

+0

LukeMcgregor, mi ha sicuramente avvicinato a una soluzione. @Colin, grazie per l'aggiunta di EXEC. Funziona sicuramente per generare le visualizzazioni per me – spons

+0

Funziona, ho notato alcune altre risposte a domande simili creare un DbContext ed eseguire il comando update view invece di chiamare Sql(). Questo ha lo sfortunato effetto collaterale di aggiornare effettivamente il DB anche quando si chiama update-database-script – user2981639

Problemi correlati