Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
ENDAST EF5 – De funktioner, API:er osv. som beskrivs på den här sidan introducerades i Entity Framework 5. Om du använder en tidigare version gäller inte en del av eller all information.
Den här videon och den steg-för-steg-genomgången visar hur du använder enumtyper med Entity Framework Designer. Det visar också hur du använder uppräkningar i en LINQ-fråga.
Den här genomgången använder Model First för att skapa en ny databas, men EF Designer kan också användas med arbetsflödet Database First för att mappa till en befintlig databas.
`Enum-stöd introducerades i Entity Framework 5.` Om du vill använda de nya funktionerna som uppräkningar, rumsliga datatyper och tabellvärdesfunktioner måste du rikta in dig på .NET Framework 4.5. Visual Studio 2012 riktar in sig på .NET 4.5 som standard.
I Entity Framework kan en uppräkning ha följande underliggande typer: Byte, Int16, Int32, Int64 eller SByte.
Titta på videon
Den här videon visar hur du använder enum-typer med Entity Framework Designer. Det visar också hur du använder uppräkningar i en LINQ-fråga.
Presenterad av: Julia Kornich
Förutsättningar
Du måste ha Visual Studio 2012, Ultimate, Premium, Professional eller Web Express edition installerat för att slutföra den här genomgången.
Konfigurera projektet
- Öppna Visual Studio 2012
- Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt
- Klicka på Visual C# i den vänstra rutan och välj sedan konsolmallen
- Ange EnumEFDesigner som namnet på projektet och klicka på OK
Skapa en ny modell med EF Designer
- Högerklicka på projektnamnet i Solution Explorer, peka på Lägg till och klicka sedan på Nytt objekt
- Välj Data på den vänstra menyn och välj sedan ADO.NET entitetsdatamodell i fönstret Mallar
- Ange EnumTestModel.edmx som filnamn och klicka sedan på Lägg till
- På sidan Guiden Entitetsdatamodell väljer du Tom modell i dialogrutan Välj modellinnehåll
- Klicka på Slutför
Entitetsdesignern, som tillhandahåller en designyta för redigering av din modell, visas.
Guiden utför följande åtgärder:
- Genererar filen EnumTestModel.edmx som definierar konceptmodellen, lagringsmodellen och mappningen mellan dem. Anger egenskapen Metadata Artifact Processing för .edmx-filen till Bädda in i utdatasammansättningen så att de genererade metadatafilerna bäddas in i sammansättningen.
- Lägger till en referens till följande sammansättningar: EntityFramework, System.ComponentModel.DataAnnotations och System.Data.Entity.
- Skapar EnumTestModel.tt och EnumTestModel.Context.tt filer och lägger till dem under .edmx-filen. Dessa T4-mallfiler genererar den kod som definierar den härledda DbContext-typen och POCO-typerna som mappas till entiteterna i .edmx-modellen.
Lägg till en ny entitetstyp
- Högerklicka på ett tomt område på designytan, välj Lägg till –> entitet, dialogrutan Ny entitet visas
- Ange Avdelning för typnamnet och ange DepartmentID för nyckelegenskapens namn, lämna typen som Int32
- Klicka på OK
- Högerklicka på entiteten och välj Lägg till ny –> skalär egenskap
- Byt namn på den nya egenskapen till Namn
- Ändra den nya egenskapens typ till Int32 (som standard är den nya egenskapen av strängtyp) Om du vill ändra typen öppnar du fönstret Egenskaper och ändrar egenskapen Typ till Int32
- Lägg till en annan skalär egenskap och byt namn på den till Budget, ändra typen till Decimal
Lägg till en uppräkningstyp
Högerklicka på egenskapen Namn i Entity Framework Designer och välj Konvertera till enum
I dialogrutan Lägg till uppräkning skriver du DepartmentNames för namn på uppräkningstyp, ändrar den underliggande typen till Int32 och lägger sedan till följande medlemmar i typen: Engelska, Matematik och Ekonomi
Tryck på OK
Spara modellen och skapa projektet
Anmärkning
När du skapar kan varningar om icke-mappade entiteter och associationer visas i fellistan. Du kan ignorera dessa varningar eftersom felen försvinner när vi har valt att generera databasen från modellen.
Om du tittar på fönstret Egenskaper ser du att typen av egenskapen Namn har ändrats till DepartmentNames och att den nyligen tillagda uppräkningstypen har lagts till i listan med typer.
Om du växlar till fönstret Modellwebbläsaren ser du att typen också har lagts till i noden Enum-typer.
Anmärkning
Du kan också lägga till nya uppräkningstyper från det här fönstret genom att klicka på höger musknapp och välja Lägg till uppräkningstyp. När typen har skapats visas den i listan över typer och du skulle kunna associera med en egenskap
Generera databas från modell
Nu kan vi generera en databas som baseras på modellen.
- Högerklicka på ett tomt utrymme på entitetsdesignerns yta och välj Generera databas från modell
- Dialogrutan Välj dataanslutning i guiden Generera databas visas Klicka på knappen Ny anslutning Ange (localdb)\mssqllocaldb för servernamnet och EnumTest för databasen och klicka på OK
- En dialogruta där du frågar om du vill skapa en ny databas visas och klickar på Ja.
- Klicka på Nästa och guiden Skapa databas genererar datadefinitionsspråk (DDL) för att skapa en databas Den genererade DDL:en visas i dialogrutan Sammanfattning och inställningar. Observera att DDL inte innehåller någon definition för en tabell som mappar till uppräkningstypen
- Klicka på Slutför klicka på Slutför kör inte DDL-skriptet.
- Guiden Skapa databas gör följande: Öppnar EnumTest.edmx.sql i T-SQL-redigeraren Genererar lagringsschemat och mappningsavsnitten i EDMX-filen Lägger till information om anslutningssträngen i App.config-filen
- Klicka på höger musknapp i T-SQL-redigeraren och välj Kör dialogrutan Anslut till server visas, ange anslutningsinformationen från steg 2 och klicka på Anslut
- Om du vill visa det genererade schemat högerklickar du på databasnamnet i SQL Server Object Explorer och väljer Uppdatera
Spara och hämta data
Öppna filen Program.cs där Main-metoden har definierats. Lägg till följande kod i funktionen Main. Koden lägger till ett nytt avdelningsobjekt i kontexten. Sedan sparas data. Koden kör också en LINQ-fråga som returnerar en avdelning där namnet är 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);
}
Kompilera och kör programmet. Programmet genererar följande utdata:
DepartmentID: 1 Name: English
Om du vill visa data i databasen högerklickar du på databasnamnet i SQL Server Object Explorer och väljer Uppdatera. Klicka sedan på höger musknapp i tabellen och välj Visa data.
Sammanfattning
I den här genomgången tittade vi på hur du mappar uppräkningstyper med hjälp av Entity Framework Designer och hur du använder uppräkningar i kod.