Procedura: pregenerare le visualizzazioni per migliorare le prestazioni di esecuzione delle query (Entity Framework)
Prima che una query possa essere eseguita su un Entity Data Model (EDM), Entity Framework genera un insieme di visualizzazioni che consente di accedere al database. Quando una query viene eseguita per la prima volta, Entity Framework genera alcune visualizzazioni e le conserva per tutta la durata dell'istanza ObjectContext. Poiché la generazione di visualizzazioni contribuisce in modo significativo al costo complessivo dell'esecuzione di una singola query, grazie a Entity Framework è possibile pregenerare le visualizzazioni e includerle nel progetto compilato. Oltre a generare e convalidare file modello e di mapping EDM, lo strumento Generatore EDM (EdmGen.exe) viene utilizzato anche per generare queste visualizzazioni. In questo argomento verrà illustrato come utilizzare EdmGen.exe per pregenerare visualizzazioni per il modello School e aggiungere il relativo file al progetto. Il modello School viene creato nella Guida rapida Entity Framework. Nella procedura finale viene spiegato come aggiungere nuovamente i file modello e di mapping come risorse incorporate a un'applicazione Web ASP.NET.
Nota |
---|
Nelle procedure illustrate in questo argomento vengono utilizzati eventi pre e post-compilazione in Visual Studio non supportati nei siti Web ASP.NET. Per pregenerare le visualizzazioni per un modello EDM utilizzato da un sito Web ASP.NET, è necessario creare il modello EDM in una libreria di classi separata, utilizzare la procedura riportata di seguito per il progetto della libreria di classi e fare riferimento a tale progetto nel progetto del sito Web ASP.NET. In alternativa, è possibile utilizzare un progetto dell'applicazione Web ASP.NET anziché un sito Web ASP.NET. In tal caso, le visualizzazioni pregenerate possono essere incluse nello stesso progetto dell'applicazione Web ASP.NET tramite le procedure descritte in questo argomento. |
Le visualizzazioni pregenerate vengono convalidate in fase di esecuzione per assicurarsi che siano coerenti con la versione corrente del modello EDM. Questa procedura garantisce che le visualizzazioni corrispondano al modello EDM. È possibile ignorare la prima procedura se il processo di compilazione sta già generando file modello e di mapping nella directory di output. Nelle procedure descritte in questo argomento viene utilizzato il modello School. È possibile generarlo completando la Guida rapida (Entity Framework).
Nota |
---|
Per eseguire le procedure illustrate in questo argomento, è necessario disporre di Visual Studio 2008 Service Pack 1 (SP1). |
Per generare i file modello e di mapping per il modello School nella directory di output
In Esplora soluzioni fare doppio clic sul file School.edmx.
Viene visualizzato il modello School in Entity Designer.
In Browser modello selezionare il modello SchoolModel e impostare Elaborazione elementi metadati su Copia nella directory di output.
In questo modo i file modello e di mapping verranno generati nella directory di output.
Compilare la soluzione.
I file modello e di mapping verranno generati nella directory di output.
Per aggiungere la generazione di visualizzazioni a un progetto Visual Basic
In Esplora soluzioni selezionare il progetto per il quale si desidera specificare l'evento di compilazione.
Scegliere Proprietàprogetto dal menu Progetto.
Nella pagina Proprietà fare clic sulla scheda Compila.
Fare clic sul pulsante Eventi di compilazione.
Nella finestra di dialogo Eventi di compilazione aggiungere l'evento di pre-compilazione seguente, senza interruzioni di riga:
"%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb"
Fare clic su OK.
Chiudere la pagina Proprietà progetto.
Compilare la soluzione.
Verrà generato il file di visualizzazione School.Views.cs.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e scegliere Aggiungi elemento esistente.
Nella finestra di dialogo Aggiungi elemento esistente passare alla cartella principale del progetto e selezionare il file School.Views.vb.
Fare clic su Aggiungi.
Compilare la soluzione.
Per aggiungere la generazione di visualizzazioni a un progetto C#
In Esplora soluzioni selezionare il progetto per il quale si desidera specificare l'evento di compilazione.
Scegliere Proprietà dal menu Progetto.
Selezionare la scheda Eventi di compilazione.
Nella finestra Riga di comando eventi pre-compilazione aggiungere l'evento di pre-compilazione seguente, senza interruzioni di riga:
"%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs"
Compilare la soluzione.
Verrà generato il file di visualizzazione School.Views.cs.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e scegliere Aggiungi elemento esistente.
Verrà visualizzata la finestra di dialogo Aggiungi elemento esistente.
Passare alla cartella principale del progetto e selezionare il file School.Views.cs.
Fare clic su Aggiungi.
Compilare la soluzione.
Per aggiungere nuovamente i file modello e di mapping come risorse incorporate per i progetti ASP.NET
Scegliere Aggiungi elemento esistente dal menu Progetto.
Passare alla directory di output per il progetto, selezionare School.csdl, quindi fare clic su OK.
In Esplora soluzioni selezionare il file aggiunto.
In Proprietà impostare Operazione di compilazione su Risorsa incorporata.
Ripetere i passaggi da 1 a 3 per i file School.ssdl e School.msl.
In Esplora soluzioni fare doppio clic sul file App.config, quindi modificare il parametro Metadata nell'attributo connectionString in base a uno dei formati seguenti:
Metadata=``res://<assemblyFullName>/<resourceName>;
Metadata=``res://*/<resourceName>;
Metadata=res://*;
resourceName
potrebbe includere lo spazio dei nomi del progetto. Per ulteriori informazioni, vedere Stringhe di connessione (Entity Framework).