Panoramica sul codice generato (Entity Data Model Designer)

ADO.NET Entity Framework contiene strumenti che consentono di generare automaticamente un livello oggetti in base al contenuto del CSDL (Conceptual Schema Definition Language) di un file con estensione edmx. Per impostazione predefinita, lo strumento personalizzato utilizzato da ADO.NET Entity Data Model Designer (Entity Designer) per generare codice del livello oggetti è EntityModelCodeGenerator. Per informazioni sugli strumenti personalizzati, vedere Implementazione di generatori di file singoli. È possibile utilizzare lo strumento da riga di comando EdmGen.exe. Per ulteriori informazioni, vedere How to: Use EdmGen.exe to Generate Object Model Files. Lo strumento da riga di comando EntityModelCodeGenerator e EdmGen.exe utilizza la classe EntityClassGenerator per generare il codice sorgente.

Con Entity Designer è inoltre possibile utilizzare modelli di testo per generare codice del livello oggetti personalizzato. Per ulteriori informazioni, vedere Procedura: personalizzare la generazione di codice del livello oggetti (Entity Data Model Designer).

Generazione di codice del livello oggetti

Lo strumento personalizzato predefinito utilizzato per generare codice del livello oggetti può essere attivato in diversi modi:

  • Utilizzare la procedura guidata ADO.NET Entity Data Model. Per ulteriori informazioni, vedere Procedura guidata Entity Data Model.

  • Utilizzare la procedura guidata Aggiorna modello. Per ulteriori informazioni, vedere Procedura guidata Aggiorna modello (strumenti di Entity Data Model).

  • Eseguire lo strumento specificato nella proprietà Custom Tool del file con estensione edmx. A tale scopo, fare clic con il pulsante destro del mouse su un file con estensione edmx in Esplora soluzioni e selezionare Esegui strumento personalizzato. Per ulteriori informazioni sulle proprietà dei file con estensione edmx, vedere Panoramica sui file con estensione edmx (Entity Framework).

  • Salvare un file con estensione edmx.

  • Uscire da un file con estensione edmx modificato. Ciò include uscire da un file con estensione edmx modificato aperto in Entity Designer.

  • Compilare un progetto con un file con estensione edmx modificato.

    Cc982041.note(it-it,VS.100).gifNota:
    Le opzioni riportate sopra consentono di generare o sovrascrivere un file di codice sorgente Visual Basic o C# con il seguente nome: <nome modello>.Designer.vb o <nome modello>.Designer.cs.Questo file viene aggiunto al nodo con estensione edmx in Esplora soluzioni.

  • Utilizzare lo strumento da riga di comando EdmGen.exe. Utilizzando lo strumento EdmGen.exe, è possibile generare un file di codice sorgente Visual Basic o C# con il nome e il percorso specificati nella riga di comando.

Cc982041.note(it-it,VS.100).gifNota:
Quando si genera codice del livello oggetti mediante lo strumento personalizzato predefinito o lo strumento EdmGen.exe, il codice del livello oggetti esistente viene sovrascritto.Per informazioni su come evitare la sovrascrittura delle personalizzazioni del livello oggetti, vedere How to: Customize Generated Data Objects.

Cc982041.note(it-it,VS.100).gifNota:
Il metodo generato in base a un'importazione di funzioni nel modello concettuale eseguirà la stored procedure corrispondente con il metodo ExecuteFunction.Se si utilizza l'overload che non accetta il parametro dell'opzione di unione, verrà utilizzata l'opzione AppendOnly.

Cc982041.note(it-it,VS.100).gifNota:
A partire da Visual Studio 2010, i generatori di codice hanno impostato la proprietà LazyLoadingEnabled in ObjectContext sul valore dell'attributo dell'annotazione annotation:LazyLoadingEnabled definito nel modello concettuale.Per impostazione predefinita, il valore annotation:LazyLoadingEnabled è impostato su true.

Determinazione dello spazio dei nomi del codice generato

Per impostazione predefinita, lo spazio dei nomi del codice generato è lo spazio dei nomi specificato nella pagina Applicazione del progetto. Se si specifica lo spazio dei nomi nella proprietà Custom Tool Namespace del file con estensione edmx, viene utilizzato lo spazio dei nomi specificato.

A seconda del tipo di progetto, si applicano alcune considerazioni aggiuntive, ovvero:

  • Per i progetti Visual Basic se per la proprietà Custom Tool Namespace non è stato impostato alcun valore e lo spazio dei nomi del progetto è vuoto, lo spazio dei nomi del codice generato sarà lo spazio dei nomi del modello concettuale specificato nel file con estensione edmx. Per ulteriori informazioni, vedere Determinazione dello spazio dei nomi predefinito. Se si specifica lo spazio dei nomi dello strumento personalizzato, il compilatore di Visual Studio anteporrà lo spazio dei nomi radice del progetto al nome che specificato dall'utente. Anche se i tipi sono definiti nello spazio dei nomi specificato, quando si dichiarano i tipi, è necessario importare defaultnamespace.specifiednamespace. Ad esempio, se lo spazio dei nomi radice del progetto è ProjectDefaultNamespace e nella proprietà Custom Tool Namespace è stato specificato TestNamespace, quando si dichiarano i tipi definiti nello spazio dei nomi TestNamespace, è necessario utilizzare: Import ProjectDefaultNamespace.TestNamespace.

  • Per i progetti C#, se non sono stati specificati spazi dei nomi per la proprietà Custom Tool Namespace, lo spazio dei nomi del codice generato sarà lo spazio dei nomi predefinito del progetto (come specificato nella pagina Applicazione del progetto) più il percorso della cartella del file con estensione edmx. Ad esempio, se il percorso del file con estensione edmx relativo alla directory radice del progetto è Cartella1/Cartella2/Model.edmx, lo spazio dei nomi del codice generato sarà SpazioDeiNomiPredefinitoProgetto.Cartella1.Cartella2.

  • Per i progetti di siti Web ASP.NET, se il file con estensione edmx si trova nella radice della cartella App_Code, lo spazio dei nomi del codice generato sarà lo spazio dei nomi del modello concettuale definito nel contenuto del CSDL del file con estensione edmx (per ulteriori informazioni, vedere Schema Element (CSDL)). Se il file con estensione edmx si trova in una sottocartella della cartella App_Code, lo spazio dei nomi del codice generato sarà il percorso della cartella relativo alla cartella App_Code. Ad esempio, se il file con estensione edmx si trova in App_Code/Cartella1/Cartella2, lo spazio dei nomi del codice generato sarà Cartella1.Cartella2.

Utilizzo di più file con estensione edmx in un progetto

Quando un progetto contiene più file con estensione edmx basati su database con nomi di tabella comuni, il codice generato può contenere nomi di classe in conflitto fra loro. Le circostanze nelle quali sorgono questi conflitti e il modo in cui vengono risolti dipendono dal tipo di progetto, come riportato di seguito:

  • Nel caso dei progetti C#, il codice generato può contenere nomi di classi in conflitto se più file con estensione edmx basati su database con nomi di tabella comuni si trovano nella stessa cartella del progetto. Per risolvere il conflitto, specificare un valore univoco per la proprietà Custom Tool Namespace di ciascun file con estensione edmx oppure collocare ogni file con estensione edmx in una sottocartella del progetto separata.

  • Nel caso dei progetti Visual Basic, il codice generato può contenere nomi di classi in conflitto se più file con estensione edmx basati su database con nomi di tabella comuni si trovano in una posizione qualsiasi all'interno del progetto. Per risolvere il conflitto, specificare un valore univoco per la proprietà Custom Tool Namespace di ciascun file con estensione edmx.

  • Nel caso dei progetti di siti Web ASP.NET, il codice generato può contenere nomi di classi in conflitto se più file con estensione edmx basati su database con nomi di tabella comuni si trovano nella cartella App_Code o nella stessa sottocartella della directory App_Code. Per risolvere il conflitto, collocare ogni file con estensione edmx in una sottocartella separata della directory App_Code.

Si noti che, in ognuno di questi casi, la risoluzione modifica lo spazio dei nomi del codice generato per ciascun file con estensione edmx; potrebbe essere necessario un aggiornamento del codice dell'applicazione esistente che utilizza le classi generate.

Estensione di classi parziali

Quando si generano classi di dati mediante gli strumenti di Entity Data Model, queste vengono implementate in classi parziali. È possibile aggiungere funzionalità agli oggetti estendendo le classi di dati parziali generate. Le classi parziali possono essere estese con proprietà e metodi personalizzati in un file di origine separato, senza alcun rischio di perdere la personalizzazione nel momento in cui i file generati vengono aggiornati. Per ulteriori informazioni, vedere How to: Customize Generated Data Objects.

Contenuto della sezione

Vedere anche

Concetti

Panoramica sui file con estensione edmx (Entity Framework)