Procedura: pregenerare le visualizzazioni per migliorare le prestazioni di esecuzione delle query
Prima di poter eseguire una query su un modello concettuale o salvare delle modifiche all'origine dati, Entity Framework deve generare un set di visualizzazioni query locali per accedere al database. Le visualizzazioni fanno parte dei metadati memorizzati nella cache per dominio applicazione. Se si creano più istanze di contesto dell'oggetto nello stesso dominio applicazione, queste riutilizzeranno le visualizzazioni dai metadati memorizzati nella cache anziché rigenerarle. Considerando che 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. Per ulteriori informazioni, vedere Considerazioni relative alle prestazioni (Entity Framework).
Oltre a generare e a convalidare i file del modello e di mapping di Entity Framework, lo strumento Generatore EDM (EdmGen.exe) viene utilizzato anche per pregenerare 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.
Per generare visualizzazioni pre-compilate, è inoltre possibile utilizzare il toolkit di trasformazione dei modelli di testo. Per ulteriori informazioni, vedere la pagina relativa all'utilizzo di un modello T4 per la generazione di visualizzazioni (la pagina potrebbe essere in inglese).
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 utilizzate da un sito Web ASP.NET, è necessario creare il file EDMX in una libreria di classi distinta, utilizzare le procedure descritte in How to: Use a Model Defined in a Class Library 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 garantirne la coerenza con la versione corrente dei file del modello e di mapping.
Nelle procedure descritte in questo argomento viene utilizzato il modello School. È possibile generarlo completando la Guida rapida (Entity Framework). È possibile ignorare la prima procedura se il processo di compilazione sta già generando file del modello e di mapping nella directory di output.
Per generare i file del modello e di mapping per il modello School nella directory di output
In Esplora soluzioni fare doppio clic sul file School.edmx.
Verrà 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\v4.0.30319\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.vb.
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 radice 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\v4.0.30319\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 radice 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).
Vedere anche
Riferimento
Altre risorse
Entity Data Model Tools
Isolamento delle prestazioni nelle visualizzazioni pre-compilate o generate in anticipo in Entity Framework 4.