Supporto per enumerazioni - Ef Designer

Nota

Solo EF5 e versioni successive : le funzionalità, le API e così via descritte in questa pagina sono state introdotte in Entity Framework 5. Se si usa una versione precedente, le informazioni qui riportate, o parte di esse, non sono applicabili.

Questo video e la procedura dettagliata illustrano come usare i tipi di enumerazione con Entity Framework Designer. Viene inoltre illustrato come usare le enumerazioni in una query LINQ.

Questa procedura dettagliata userà Model First per creare un nuovo database, ma Ef Designer può essere usato anche con il flusso di lavoro Database First per eseguire il mapping a un database esistente.

Il supporto delle enumerazioni è stato introdotto in Entity Framework 5. Per usare le nuove funzionalità come enumerazioni, tipi di dati spaziali e funzioni con valori di tabella, è necessario usare .NET Framework 4.5. Visual Studio 2012 è destinato a .NET 4.5 per impostazione predefinita.

In Entity Framework un'enumerazione può avere i tipi sottostanti seguenti: Byte, Int16, Int32, Int64 o SByte.

Guarda il video

Questo video illustra come usare i tipi di enumerazione con Entity Framework Designer. Viene inoltre illustrato come usare le enumerazioni in una query LINQ.

Presentato da: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Prerequisiti

Per completare questa procedura dettagliata, è necessario avere installato Visual Studio 2012, Ultimate, Premium, Professional o Web Express Edition.

Configurare il progetto

  1. Aprire Visual Studio 2012
  2. Scegliere Nuovo dal menu File e quindi fare clic su Progetto
  3. Nel riquadro sinistro fare clic su Visual C#, quindi selezionare il modello console
  4. Immettere EnumEFDesigner come nome del progetto e fare clic su OK

Creare un nuovo modello usando Entity Framework Designer

  1. Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni, scegliere Aggiungi, quindi fare clic su Nuovo elemento
  2. Selezionare Dati dal menu a sinistra e quindi selezionare ADO.NET Entity Data Model nel riquadro Modelli
  3. Immettere EnumTestModel.edmx per il nome del file e quindi fare clic su Aggiungi
  4. Nella pagina Entity Data Model Wizard (Creazione guidata Entity Data Model) selezionare Empty Model (Modello vuoto) nella finestra di dialogo Choose Model Contents (Scegli contenuto modello)
  5. Fare clic su Fine

Viene visualizzato Entity Designer, che fornisce un'area di progettazione per la modifica del modello.

La procedura guidata consente di effettuare le azioni seguenti:

  • Genera il file EnumTestModel.edmx che definisce il modello concettuale, il modello di archiviazione e il mapping tra di essi. Imposta la proprietà Metadata Artifact Processing del file con estensione edmx su Incorpora nell'assembly di output in modo che i file di metadati generati vengano incorporati nell'assembly.
  • Aggiunge un riferimento agli assembly seguenti: EntityFramework, System.ComponentModel.DataAnnotations e System.Data.Entity.
  • Crea EnumTestModel.tt e EnumTestModel.Context.tt file e li aggiunge nel file con estensione edmx. Questi file modello T4 generano il codice che definisce il tipo derivato DbContext e i tipi POCO che eseguono il mapping alle entità nel modello con estensione edmx.

Aggiungere un nuovo tipo di entità

  1. Fare clic con il pulsante destro del mouse su un'area vuota dell'area di progettazione, selezionare Aggiungi -> Entità. Verrà visualizzata la finestra di dialogo Nuova entità.
  2. Specificare Department per il nome del tipo e specificare DepartmentID per il nome della proprietà della chiave, lasciare il tipo int32
  3. Fare clic su OK.
  4. Fare clic con il pulsante destro del mouse sull'entità e scegliere Aggiungi nuovo -> Proprietà scalare
  5. Rinominare la nuova proprietà in Name
  6. Modificare il tipo della nuova proprietà in Int32 (per impostazione predefinita, la nuova proprietà è di tipo String) Per modificare il tipo, aprire il Finestra Proprietà e modificare la proprietà Type in Int32
  7. Aggiungere un'altra proprietà scalare e rinominarla in Budget, modificare il tipo in Decimal

Aggiungere un tipo di enumerazione

  1. In Entity Framework Designer fare clic con il pulsante destro del mouse sulla proprietà Name e scegliere Converti in enumerazione

    Convert To Enum

  2. Nella finestra di dialogo Aggiungi enumerazione digitare DepartmentNames per il nome del tipo enumerazione, modificare Il tipo sottostante in Int32 e quindi aggiungere i membri seguenti al tipo: Inglese, Matematica ed Economia

    Add Enum Type

  3. Premere OK

  4. Salvare il modello e compilare il progetto

    Nota

    Quando si compila, gli avvisi relativi a entità e associazioni non mappate possono essere visualizzati nell'elenco errori. È possibile ignorare questi avvisi perché dopo aver scelto di generare il database dal modello, gli errori verranno ignorati.

Se si esamina il Finestra Proprietà, si noterà che il tipo della proprietà Name è stato modificato in DepartmentNames e il tipo di enumerazione appena aggiunto è stato aggiunto all'elenco di tipi.

Se si passa alla finestra Del browser modelli, si noterà che il tipo è stato aggiunto anche al nodo Tipi enum.

Model Browser

Nota

È anche possibile aggiungere nuovi tipi di enumerazione da questa finestra facendo clic sul pulsante destro del mouse e selezionando Aggiungi tipo enumerazione. Dopo aver creato il tipo, verrà visualizzato nell'elenco dei tipi e sarà possibile associarlo a una proprietà

Generare un database dal modello

È ora possibile generare un database basato sul modello.

  1. Fare clic con il pulsante destro del mouse su uno spazio vuoto nell'area Di Progettazione entità e scegliere Genera database da modello
  2. Viene visualizzata la finestra di dialogo Choose Your Data Connessione ion della Generazione guidata database fare clic sul pulsante Nuovo Connessione ion Specifica (localdb)\mssqllocaldb per il nome del server e EnumTest per il database e fare clic su OK
  3. Verrà visualizzata una finestra di dialogo in cui viene chiesto se si vuole creare un nuovo database, fare clic su .
  4. Fare clic su Avanti e la Creazione guidata database genera il linguaggio DDL (Data Definition Language) per la creazione di un database Il DDL generato viene visualizzato nella finestra di dialogo Riepilogo e Impostazioni Si noti che il DDL non contiene una definizione per una tabella che esegue il mapping al tipo di enumerazione
  5. Fare clic su Fine facendo clic su Fine non esegue lo script DDL.
  6. La Creazione guidata database esegue le operazioni seguenti: apre EnumTest.edmx.sql nell'editor T-SQL Genera le sezioni dello schema e del mapping dell'archivio del file EDMX Aggiunge stringa di connessione informazioni al file App.config
  7. Fare clic sul pulsante destro del mouse nell'editor T-SQL e selezionare Esegui la finestra di dialogo Esegui Connessione al server, immettere le informazioni di connessione del passaggio 2 e fare clic su Connessione
  8. Per visualizzare lo schema generato, fare clic con il pulsante destro del mouse sul nome del database in SQL Server Esplora oggetti e scegliere Aggiorna

Rendere persistenti e recuperare i dati

Aprire il file Program.cs in cui è definito il metodo Main. Aggiungere il codice seguente alla funzione Main. Il codice aggiunge un nuovo oggetto Department al contesto. Salva quindi i dati. Il codice esegue anche una query LINQ che restituisce un reparto in cui il nome è DepartmentNames.English.

using (var context = new EnumTestModelContainer())
{
    context.Departments.Add(new Department{ Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} and Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Compilare l'applicazione ed eseguirla. Il programma produce l'output seguente:

DepartmentID: 1 Name: English

Per visualizzare i dati nel database, fare clic con il pulsante destro del mouse sul nome del database in SQL Server Esplora oggetti e scegliere Aggiorna. Fare quindi clic sul pulsante destro del mouse nella tabella e selezionare Visualizza dati.

Riepilogo

In questa procedura dettagliata è stato illustrato come eseguire il mapping dei tipi di enumerazione usando Entity Framework Designer e come usare le enumerazioni nel codice.