Modell först

Den här videon och den stegvisa genomgången ger en introduktion till Model First-utveckling med Entity Framework. Med Model First kan du skapa en ny modell med Entity Framework Designer och sedan generera ett databasschema från modellen. Modellen lagras i en EDMX-fil (.edmx-tillägget) och kan visas och redigeras i Entity Framework Designer. De klasser som du interagerar med i ditt program genereras automatiskt från EDMX-filen.

Titta på videon

Den här videon och den stegvisa genomgången ger en introduktion till Model First-utveckling med Entity Framework. Med Model First kan du skapa en ny modell med Entity Framework Designer och sedan generera ett databasschema från modellen. Modellen lagras i en EDMX-fil (.edmx-tillägget) och kan visas och redigeras i Entity Framework Designer. De klasser som du interagerar med i ditt program genereras automatiskt från EDMX-filen.

Presenterad av: Rowan Miller

Video: WMV | MP4 | WMV (ZIP)

Förutsättningar

Du måste ha Visual Studio 2010 eller Visual Studio 2012 installerat för att slutföra den här genomgången.

Om du använder Visual Studio 2010 måste du också ha NuGet installerat.

1. Skapa programmet

För att hålla det enkelt ska vi skapa ett grundläggande konsolprogram som använder Model First för att utföra dataåtkomst:

  • Öppna Visual Studio
  • Fil –> Ny –> Projekt...
  • Välj Windows på den vänstra menyn och Konsolprogram
  • Ange ModelFirstSample som namn
  • Välj OK

2. Skapa modell

Vi ska använda Entity Framework Designer, som ingår som en del av Visual Studio, för att skapa vår modell.

  • Projekt –> Lägg till nytt objekt...

  • Välj Data på den vänstra menyn och sedan ADO.NET entitetsdatamodell

  • Ange BloggingModel som namn och klicka på OK. Då startas guiden Entitetsdatamodell

  • Välj Tom modell och klicka på Slutför

    Skapa tom modell

Entity Framework Designer öppnas med en tom modell. Nu kan vi börja lägga till entiteter, egenskaper och associationer till modellen.

  • Högerklicka på designytan och välj Egenskaper

  • I fönstret Egenskaper ändrar du namnet på entitetens container till BloggingContextDet här är namnet på den härledda kontexten som ska genereras åt dig, kontexten representerar en session med databasen, så att vi kan fråga efter och spara data

  • Högerklicka på designytan och välj Lägg till ny –> entitet...

  • Ange Blogg som entitetsnamn och BlogId som nyckelnamn och klicka på OK

    Lägg till bloggentitet

  • Högerklicka på den nya entiteten på designytan och välj Lägg till ny -> skalär egenskap, ange Namn som namnet på egenskapen.

  • Upprepa den här processen för att lägga till en URL-egenskap .

  • Högerklicka på url-egenskapen på designytan och välj Egenskaper. I fönstret Egenskaper ändrar du inställningen Nullable till Sant. Det gör att vi kan spara en blogg i databasen utan att tilldela den en URL

  • Med hjälp av de tekniker som du just har lärt dig lägger du till en Post-entitet med en PostId-nyckelegenskap

  • Lägg till skalära egenskaper för Rubrik och Innehåll till Post-entiteten

Nu när vi har ett par entiteter är det dags att lägga till en association (eller relation) mellan dem.

  • Högerklicka på designytan och välj Lägg till ny -> association...

  • Få ena änden av relationen att peka på Blogg med en multiplicitet av en och den andra slutpunkten peka till Post med en multiplicitet av MångaDetta innebär att en blogg har flera inlägg och varje inlägg tillhör en blogg

  • Kontrollera att rutan Lägg till egenskaper för sekundärnyckel i Entiteten "Post" är markerad och klicka på OK

    Lägg till association MF

Nu har vi en enkel modell som vi kan generera en databas från och använda för att läsa och skriva data.

Modell initial

Ytterligare steg i Visual Studio 2010

Om du arbetar i Visual Studio 2010 finns det några ytterligare steg som du behöver följa för att uppgradera till den senaste versionen av Entity Framework. Uppgradering är viktigt eftersom det ger dig åtkomst till en förbättrad API-yta, som är mycket enklare att använda samt de senaste felkorrigeringarna.

Först måste vi hämta den senaste versionen av Entity Framework från NuGet.

  • Projekt–> Hantera NuGet-paket...Om du inte har alternativet Hantera NuGet-paket... bör du installera den senaste versionen av NuGet
  • Välj fliken Online
  • Välj EntityFramework-paketet
  • Klicka på Installera

Därefter måste vi byta modell för att generera kod som använder DbContext-API:et, som introducerades i senare versioner av Entity Framework.

  • Högerklicka på en tom plats för din modell i EF Designer och välj Lägg till kodgenereringsobjekt...

  • Välj Onlinemallar på den vänstra menyn och sök efter DbContext

  • Välj EF 5.x DbContext Generator för C#, ange BloggingModel som namn och klicka på Lägg till

    DbContext-mall

3. Generera databasen

Med vår modell kan Entity Framework beräkna ett databasschema som gör att vi kan lagra och hämta data med hjälp av modellen.

Databasservern som är installerad med Visual Studio skiljer sig beroende på vilken version av Visual Studio du har installerat:

  • Om du använder Visual Studio 2010 skapar du en SQL Express-databas.
  • Om du använder Visual Studio 2012 skapar du en LocalDB-databas .

Nu ska vi gå vidare och generera databasen.

  • Högerklicka på designytan och välj Generera databas från modell...

  • Klicka på Ny anslutning... och ange antingen LocalDB eller SQL Express, beroende på vilken version av Visual Studio du använder, ange ModelFirst.Blogging som databasnamn.

    LocalDB-anslutning MF

    Sql Express Connection MF

  • Välj OK så tillfrågas du om du vill skapa en ny databas och väljer Ja

  • Välj Nästa så beräknar Entity Framework Designer ett skript för att skapa databasschemat

  • När skriptet har visats klickar du på Slutför så läggs skriptet till i projektet och öppnas

  • Högerklicka på skriptet och välj Kör. Du uppmanas att ange databasen att ansluta till, ange LocalDB eller SQL Server Express, beroende på vilken version av Visual Studio du använder

4. Läsa och skriva data

Nu när vi har en modell är det dags att använda den för att komma åt vissa data. De klasser som vi ska använda för att komma åt data genereras automatiskt åt dig baserat på EDMX-filen.

Den här skärmbilden är från Visual Studio 2012, om du använder Visual Studio 2010 hamnar BloggingModel.tt och BloggingModel.Context.tt filer direkt under projektet i stället för kapslade under EDMX-filen.

Genererade klasser

Implementera main-metoden i Program.cs enligt nedan. Den här koden skapar en ny instans av kontexten och använder den sedan för att infoga en ny blogg. Sedan använder den en LINQ-fråga för att hämta alla bloggar från databasen som ordnas alfabetiskt efter Rubrik.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Nu kan du köra programmet och testa det.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

5. Hantera modelländringar

Nu är det dags att göra vissa ändringar i vår modell, när vi gör dessa ändringar måste vi också uppdatera databasschemat.

Vi börjar med att lägga till en ny användarentitet i vår modell.

  • Lägg till ett nytt användarentitetsnamn med Användarnamn som nyckelnamn och Sträng som egenskapstyp för nyckeln

    Lägg till entitet för användare

  • Högerklicka på egenskapen Användarnamn på designytan och välj Egenskaper. I fönstret Egenskaper ändrar du inställningen MaxLength till 50Detta begränsar de data som kan lagras i användarnamn till 50 tecken

  • Lägg till en skalär egenskap för DisplayName i användarentiteten

Vi har nu en uppdaterad modell och vi är redo att uppdatera databasen så att den passar vår nya användarentitetstyp.

  • Högerklicka på designytan och välj Generera databas från modell..., Entity Framework beräknar ett skript för att återskapa ett schema baserat på den uppdaterade modellen.
  • Klicka på Slutför
  • Du kan få varningar om att skriva över det befintliga DDL-skriptet och mappnings- och lagringsdelarna i modellen. Klicka på Ja för båda varningarna
  • Det uppdaterade SQL-skriptet för att skapa databasen öppnas åt dig
    Skriptet som genereras släpper alla befintliga tabeller och återskapar sedan schemat från grunden. Detta kan fungera för lokal utveckling, men det är inte möjligt att skicka ändringar till en databas som redan har distribuerats. Om du behöver publicera ändringar i en databas som redan har distribuerats måste du redigera skriptet eller använda ett schemajäxverktyg för att beräkna ett migreringsskript.
  • Högerklicka på skriptet och välj Kör. Du uppmanas att ange databasen att ansluta till, ange LocalDB eller SQL Server Express, beroende på vilken version av Visual Studio du använder

Sammanfattning

I den här genomgången tittade vi på Model First-utveckling, som gjorde det möjligt för oss att skapa en modell i EF Designer och sedan generera en databas från den modellen. Sedan använde vi modellen för att läsa och skriva data från databasen. Slutligen uppdaterade vi modellen och återskapade sedan databasschemat så att det matchar modellen.