- Artikel
förbiTom Dykstra
Exempelwebbapplikationen Contoso University visar hur man skapar ASP.NET Web Forms-applikationer med hjälp av Entity Framework 4.0 och Visual Studio 2010. Exempelapplikationen är en webbplats för ett fiktivt Contoso University. Den innehåller funktioner som studentantagning, skapande av kurser och instruktörsuppgifter.
Handledningen visar exempel i C#. Denedladdningsbart provinnehåller kod i både C# och Visual Basic.
Databas först
Det finns tre sätt att arbeta med data i Entity Framework:Databas först,Modell först, ochKod först. Denna handledning är för Database First. För information om skillnaderna mellan dessa arbetsflöden och vägledning om hur du väljer det bästa för ditt scenario, seEntity Framework Development Workflows.
Webbformulär
Denna handledningsserie använder ASP.NET Web Forms-modellen och förutsätter att du vet hur man arbetar med ASP.NET Web Forms i Visual Studio. Om du inte gör det, seKomma igång med ASP.NET 4.5 Web Forms. Om du föredrar att arbeta med ASP.NET MVC-ramverket, seKomma igång med Entity Framework med ASP.NET MVC.
Programvaruversioner
Visas i handledningen Fungerar även med Windows 7 Windows 8 Visual Studio 2010 Visual Studio 2010 Express för webben. Handledningen har inte testats med senare versioner av Visual Studio. Det finns många skillnader i menyval, dialogrutor och mallar. .NET 4 .NET 4.5 är bakåtkompatibel med .NET 4, men handledningen har inte testats med .NET 4.5. Entity Framework 4 Handledningen har inte testats med senare versioner av Entity Framework. Från och med Entity Framework 5 använder EF som standard DbContext API
som introducerades med EF 4.1. EntityDataSource-kontrollen designades för att användaObjectContext
API. För information om hur du använder EntityDataSource-kontrollen medDbContext
API, sedetta blogginlägg.Frågor
Om du har frågor som inte är direkt relaterade till handledningen kan du lägga upp dem påASP.NET Entity Framework-forum, denEntity Framework och LINQ to Entities forum, ellerStackOverflow.com.
Översikt
Applikationen du kommer att bygga i dessa handledningar är en enkel universitetswebbplats.
Användare kan visa och uppdatera information om elever, kurser och lärare. Några av skärmarna du skapar visas nedan.
Skapa webbapplikationen
För att starta handledningen, öppna Visual Studio och skapa sedan ett nytt ASP.NET-webbapplikationsprojekt med hjälp avASP.NET webbapplikationmall:
Den här mallen skapar ett webbapplikationsprojekt som redan innehåller en stilmall och huvudsidor:
ÖppnaSite.Masterfil och ändra "My ASP.NET Application" till "Contoso University".
Contoso University
HittaMenykontroll namngivenNavigeringsmeny
och ersätt den med följande markering, som lägger till menyalternativ för sidorna du ska skapa.
ÖppnaDefault.aspxsida och ändraInnehåll
kontroll namngivenKroppsinnehåll
till detta:
Välkommen till Contoso University!
Du har nu en enkel startsida med länkar till de olika sidorna som du kommer att skapa:
Skapar databasen
För dessa handledningar använder du Entity Framework-datamodelldesignern för att automatiskt skapa datamodellen baserat på en befintlig databas (ofta kalladdatabas förstnärma sig). Ett alternativ som inte tas upp i denna handledningsserie är att skapa datamodellen manuellt och sedan låta designern generera skript som skapar databasen (denmodell förstnärma sig).
För den databas-först-metoden som används i den här handledningen är nästa steg att lägga till en databas på webbplatsen. Det enklaste sättet är att först ladda ner projektet som följer med denna handledning. Högerklicka sedan påApplikationsdatamapp, väljLägg till befintligt objekt, och väljSkola.mdfdatabasfil från det nedladdade projektet.
Ett alternativ är att följa instruktionerna påSkapar skolans exempeldatabas. Oavsett om du laddar ner databasen eller skapar den, kopieraSkola.mdffil från följande mapp till din applikationsApplikationsdatamapp:
%PROGRAMFILER%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
(Denna plats för.mdffilen förutsätter att du använder SQL Server 2008 Express.)
Om du skapar databasen från ett skript, utför följande steg för att skapa ett databasdiagram:
IServer Explorer, bygga utDataanslu*tningar, bygga utSkola.mdf, HögerklickaDatabasdiagramoch väljLägg till nytt diagram.
Välj alla tabeller och klicka sedanLägg till.
SQL Server skapar ett databasdiagram som visar tabeller, kolumner i tabellerna och relationer mellan tabellerna. Du kan flytta runt borden för att organisera dem som du vill.
Spara diagrammet som "SchoolDiagram" och stäng det.
Om du laddar nerSkola.mdffil som följer med denna handledning kan du se databasdiagrammet genom att dubbelklickaSkoldiagramunderDatabasdiagramiServer Explorer.
Diagrammet ser ut ungefär så här (tabellerna kan vara på olika platser än vad som visas här):
Skapar Entity Framework Data Model
Nu kan du skapa en Entity Framework-datamodell från denna databas. Du kan skapa datamodellen i programmets rotmapp, men för den här handledningen placerar du den i en mapp som heterDAL(för Data Access Layer).
ILösningsutforskare, lägg till en projektmapp med namnetDAL(se till att det är under projektet, inte under lösningen).
Högerklicka påDALmapp och välj sedanLägg tillochNytt föremål. UnderInstallerade mallar, VäljData, VäljADO.NET Entity Data Modelmall, namnge detSchoolModel.edmx, och klicka sedanLägg till.
Detta startar guiden Entity Data Model Wizard. I det första steget i guidenGenerera från databasalternativet är valt som standard. KlickNästa.
I denVälj din dataanslu*tningsteg, lämna standardvärdena och klickaNästa. Skoldatabasen är vald som standard och anslu*tningsinställningen sparas iWeb.configfil somSkolEntities.
I denVälj dina databasobjektguiden, välj alla tabeller utomsis diagram
(som skapades för diagrammet du genererade tidigare) och klicka sedanAvslu*ta.
När den är klar med att skapa modellen visar Visual Studio dig en grafisk representation av Entity Framework-objekten (entiteterna) som motsvarar dina databastabeller. (Som med databasdiagrammet kan placeringen av enskilda element skilja sig från vad du ser i den här illustrationen. Du kan dra runt elementen för att matcha illustrationen om du vill.)
Utforska Entity Framework Data Model
Du kan se att entitetsdiagrammet ser väldigt likt ut databasdiagrammet, med ett par skillnader. En skillnad är tillägget av symboler i slu*tet av varje association som indikerar typen av association (tabellrelationer kallas entitetsassociationer i datamodellen):
En en-till-noll-eller-ett-association representeras av "1" och "0..1".
I det här fallet, a
Person
entitet kan eller kanske inte är associerad med enKontorsuppdrag
entitet. EnKontorsuppdrag
enheten måste vara associerad med enPerson
entitet. Med andra ord kan en instruktör tilldelas eller inte tilldelas ett kontor, och vilket kontor som helst kan tilldelas endast en instruktör.En en-till-många-förening representeras av "1" och "*".
I det här fallet, a
Person
enheten kan ha associerats eller inteStudentGrade
enheter. AStudentGrade
enhet måste vara associerad med enPerson
entitet.StudentGrade
enheter representerar faktiskt inskrivna kurser i denna databas; om en student är inskriven på en kurs och det inte finns något betyg än,Kvalitet
egendomen är null. Med andra ord, en student kanske inte är inskriven i några kurser ännu, kan vara inskriven i en kurs eller kan vara inskriven i flera kurser. Varje betyg i en anmäld kurs gäller endast en elev.En många-till-många-förening representeras av "*" och "*".
I det här fallet, a
Person
enheten kan ha associerats eller inteKurs
enheter, och det omvända är också sant: aKurs
enheten kan ha associerats eller intePerson
enheter. Med andra ord kan en instruktör undervisa i flera kurser, och en kurs kan undervisas av flera instruktörer. (I den här databasen gäller detta förhållande endast för instruktörer; det länkar inte studenter till kurser. Studenter länkas till kurser genom tabellen StudentGrades.)
En annan skillnad mellan databasdiagrammet och datamodellen är tilläggetNavigeringsegenskaperavsnitt för varje enhet. En navigeringsegenskap för en enhet refererar till relaterade enheter. Till exempelKurser
fastighet i enPerson
enheten innehåller en samling av allaKurs
enheter som är relaterade till detPerson
entitet.
Ytterligare en skillnad mellan databasen och datamodellen är frånvaron avKursinstruktör
associationstabell som används i databasen för att länkaPerson
ochKurs
tabeller i ett många-till-många-förhållande. Navigeringsegenskaperna gör att du kan bli relateradKurs
enheter frånPerson
enhet och närståendePerson
enheter frånKurs
enhet, så det finns inget behov av att representera associationstabellen i datamodellen.
För denna handledning, anta attFörnamn
kolumn avPerson
Tabellen innehåller faktiskt både en persons förnamn och mellannamn. Du vill ändra namnet på fältet för att återspegla detta, men databasadministratören (DBA) kanske inte vill ändra databasen. Du kan ändra namnet påFörnamn
egenskapen i datamodellen, samtidigt som dess databasekvivalent lämnas oförändrad.
Högerklicka i designernFörnamniPerson
enhet och välj sedanDöp om.
Skriv in det nya namnet "FirstMidName". Detta ändrar hur du refererar till kolumnen i kod utan att ändra databasen.
Modellwebbläsaren tillhandahåller ett annat sätt att visa databasstrukturen, datamodellstrukturen och mappningen mellan dem. För att se det högerklickar du på ett tomt område i enhetsdesignern och klickar sedanModell webbläsare.
DeModell webbläsarerutan visar en trädvy. (DeModell webbläsarerutan kan vara dockad medLösningsutforskarerutan.) DenSkolmodellnoden representerar datamodellstrukturen ochSchoolModel.Storenoden representerar databasstrukturen.
Bygga utSchoolModel.Storeexpandera för att se tabellernaTabeller / vyerför att se tabeller och expandera sedanKursför att se kolumnerna i en tabell.
Bygga utSkolmodell, bygga utEntitetstyper, och expandera sedanKursnod för att se enheterna och egenskaperna inom enheterna.
I antingen designern ellerModell webbläsarerutan kan du se hur Entity Framework relaterar objekten för de två modellerna. Högerklicka påPerson
enhet och väljTabellmappning.
Detta öppnarKartläggningsdetaljerfönster. Observera att det här fönstret låter dig se databaskolumnenFörnamn
är mappad tillFirstMidName
, vilket är vad du döpte om det till i datamodellen.
Entity Framework använder XML för att lagra information om databasen, datamodellen och mappningarna mellan dem. DeSchoolModel.edmxfilen är faktiskt en XML-fil som innehåller denna information. Designern återger informationen i ett grafiskt format, men du kan också se filen som XML genom att högerklicka på.edmxfil inLösningsutforskare, klickarÖppna medoch väljaXML (text) Editor. (Datamodelldesignern och en XML-redigerare är bara två olika sätt att öppna och arbeta med samma fil, så du kan inte låta designern öppna och öppna filen i en XML-redigerare samtidigt.)
Du har nu skapat en webbplats, en databas och en datamodell. I nästa genomgång kommer du att börja arbeta med data med hjälp av datamodellen och ASP.NETEntityDataSource
kontrollera.
Nästa