Sdílet prostřednictvím


Začínáme se službou Entity Framework 4.0 Database First a Web Forms ASP.NET 4

Tom Dykstra

Ukázková webová aplikace Contoso University ukazuje, jak vytvářet ASP.NET Web Forms aplikace pomocí entity frameworku 4.0 a sady Visual Studio 2010. Ukázková aplikace je web fiktivní univerzity Contoso. Zahrnuje funkce, jako je přijetí studentů, vytváření kurzů a zadání instruktora.

Tento kurz ukazuje příklady v jazyce C#. Ukázka ke stažení obsahuje kód v jazyce C# i Visual Basic.

První databáze

S daty v Entity Frameworku můžete pracovat třemi způsoby: Database First, Model First a Code First. Tento kurz je určený pro Database First. Informace o rozdílech mezi těmito pracovními postupy a pokyny k výběru nejvhodnějšího pracovního postupu pro váš scénář najdete v tématu Pracovní postupy vývoje entity frameworku.

webové formuláře

Tato série kurzů používá model ASP.NET Web Forms a předpokládá, že víte, jak pracovat s ASP.NET Web Forms v sadě Visual Studio. Pokud ne, podívejte se na Začínáme s ASP.NET 4.5 Web Forms. Pokud dáváte přednost práci s architekturou ASP.NET MVC, projděte si téma Začínáme s rozhraním Entity Framework pomocí ASP.NET MVC.

Verze softwaru

Zobrazeno v kurzu Funguje také s
Windows 7 Windows 8
Visual Studio 2010 Visual Studio 2010 Express pro web. Kurz nebyl testován s novějšími verzemi sady Visual Studio. Výběry nabídek, dialogová okna a šablony jsou různé.
.NET 4 .NET 4.5 je zpětně kompatibilní s .NET 4, ale kurz nebyl testován s .NET 4.5.
Entity Framework 4 Kurz nebyl testován s novějšími verzemi Entity Frameworku. Počínaje Entity Framework 5 používá EF ve výchozím nastavení ten DbContext API , který byl zaveden s EF 4.1. Ovládací prvek EntityDataSource byl navržen tak, aby používal ObjectContext rozhraní API. Informace o použití ovládacího prvku EntityDataSource s rozhraním API najdete v DbContexttomto blogovém příspěvku.

Dotazy

Pokud máte otázky, které přímo nesouvisejí s kurzem, můžete je publikovat na fóru ASP.NET Entity Framework, na fóru Entity Framework a LINQ to Entities nebo na StackOverflow.com.

Přehled

Aplikace, kterou budete v těchto kurzech vytvářet, je jednoduchý univerzitní web.

Snímek obrazovky s domovskou stránkou Contoso University, která zobrazuje odkazy na stránky Domů, Informace, Studenti, Kurzy, Instruktoři a Oddělení

Uživatelé můžou zobrazit a aktualizovat informace o studentech, kurzech a instruktorech. Několik obrazovek, které vytvoříte, najdete níže.

Obrázek 30

Obrázek37

Obrázek31

Obrázek32

Vytvoření webové aplikace

Pokud chcete zahájit kurz, otevřete sadu Visual Studio a pak pomocí šablony webové aplikace ASP.NET vytvořte nový projekt webové aplikace ASP.NET :

Obrázek01

Tato šablona vytvoří projekt webové aplikace, který už obsahuje šablonu stylů a stránky předlohy:

Obrázek02

Otevřete soubor Site.Master a změňte "Moje aplikace ASP.NET" na "Contoso University".

<h1>
    Contoso University
</h1>

Najděte ovládací prvek Nabídka s názvem NavigationMenu a nahraďte ho následujícím kódem, který přidá položky nabídky pro stránky, které budete vytvářet.

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
                    IncludeStyleBlock="false" Orientation="Horizontal">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
                        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
                        <asp:MenuItem NavigateUrl="~/Students.aspx" Text="Students">
                            <asp:MenuItem NavigateUrl="~/StudentsAdd.aspx" Text="Add Students" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Courses.aspx" Text="Courses">
                            <asp:MenuItem NavigateUrl="~/CoursesAdd.aspx" Text="Add Courses" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Instructors.aspx" Text="Instructors">
                            <asp:MenuItem NavigateUrl="~/InstructorsCourses.aspx" Text="Course Assignments" />
                            <asp:MenuItem NavigateUrl="~/OfficeAssignments.aspx" Text="Office Assignments" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Departments.aspx" Text="Departments">
                            <asp:MenuItem NavigateUrl="~/DepartmentsAdd.aspx" Text="Add Departments" />
                        </asp:MenuItem>
                    </Items>
                </asp:Menu>

Otevřete stránku Default.aspx a změňte Content ovládací prvek s názvem BodyContent na tento:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to Contoso University!
   </h2>
</asp:Content>

Teď máte jednoduchou domovskou stránku s odkazy na různé stránky, které budete vytvářet:

Snímek obrazovky s domovskou stránkou Contoso University, která zobrazuje odkazy na stránky Domovská stránka, Informace o aplikaci, Studenti, Kurzy, Instruktoři a Oddělení

Vytvoření databáze

V těchto kurzech použijete návrháře datového modelu Entity Framework k automatickému vytvoření datového modelu založeného na existující databázi (často označované jako přístup založený na databázi ). Alternativou, která není v této sérii kurzů popsaná, je vytvořit datový model ručně a pak nechat návrháře vygenerovat skripty, které vytvoří databázi (přístup založený na modelu ).

V případě metody první databáze použité v tomto kurzu je dalším krokem přidání databáze do lokality. Nejjednodušší je nejprve stáhnout projekt, který je v tomto kurzu. Potom klikněte pravým tlačítkem na složku App_Data , vyberte Přidat existující položku a ze staženého projektu vyberte soubor databáze School.mdf .

Alternativou je postupovat podle pokynů v tématu Vytvoření ukázkové databáze školy. Ať už databázi stáhnete nebo vytvoříte, zkopírujte soubor School.mdf z následující složky do App_Data složky aplikace:

%PROGRAMFILES%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

(Toto umístění souboru .mdf předpokládá, že používáte SQL Server 2008 Express.)

Pokud vytváříte databázi ze skriptu, pomocí následujících kroků vytvořte diagram databáze:

  1. V Průzkumníku serveru rozbalte datová připojení, rozbalte School.mdf, klikněte pravým tlačítkem na Databázové diagramy a vyberte Přidat nový diagram.

    Obrázek 35

  2. Vyberte všechny tabulky a klikněte na Přidat.

    Obrázek36

    SQL Server vytvoří diagram databáze, který zobrazuje tabulky, sloupce v tabulkách a relace mezi tabulkami. Tabulky můžete přesouvat a uspořádat je, jak chcete.

  3. Uložte diagram jako "SchoolDiagram" a zavřete ho.

Pokud si stáhnete soubor School.mdf , který je v tomto kurzu, můžete zobrazit diagram databáze poklikáním na SchoolDiagram v části Diagramy databáze v Průzkumníku serveru.

Obrázek38

Diagram vypadá přibližně takto (tabulky se můžou nacházet v různých umístěních, než je znázorněno tady):

Obrázek04

Vytvoření datového modelu Entity Framework

Teď můžete z této databáze vytvořit datový model Entity Framework. Datový model můžete vytvořit v kořenové složce aplikace, ale v tomto kurzu ho umístíte do složky s názvem DAL (pro Data Access Layer).

V Průzkumník řešení přidejte složku projektu s názvem DAL (ujistěte se, že je v projektu, ne v řešení).

Klikněte pravým tlačítkem na složku DAL a pak vyberte Přidat a nová položka. V části Nainstalované šablony vyberte Data, vyberte šablonu ADO.NET Entity Data Model , pojmenujte ji SchoolModel.edmx a klikněte na Přidat.

Obrázek05

Tím se spustí Průvodce modelem dat entity. V prvním kroku průvodce je ve výchozím nastavení vybraná možnost Generovat z databáze . Klikněte na Next (Další).

Obrázek06

V kroku Zvolte datové připojení ponechte výchozí hodnoty a klikněte na Další. Ve výchozím nastavení je vybraná školní databáze a nastavení připojení se uloží do souboruWeb.config jako SchoolEntities.

Obrázek07

V kroku Průvodce Zvolte databázové objekty vyberte všechny tabulky s výjimkou sysdiagrams tabulky (která byla vytvořena pro diagram, který jste vytvořili dříve) a potom klikněte na Dokončit.

Obrázek08

Po vytvoření modelu zobrazí Visual Studio grafické znázornění objektů (entit) Entity Framework, které odpovídají databázovým tabulkám. (Stejně jako u diagramu databáze se umístění jednotlivých prvků může lišit od toho, co vidíte na tomto obrázku. Pokud chcete, můžete prvky přetáhnout tak, aby odpovídaly obrázku.)

Obrázek09

Zkoumání datového modelu Entity Framework

Můžete vidět, že diagram entit vypadá velmi podobně jako diagram databáze s několika rozdíly. Jedním z rozdílů je přidání symbolů na konci každého přidružení, které označují typ přidružení (relace mezi tabulkami se v datovém modelu nazývají přidružení entit):

  • Přidružení 1:nula nebo 1 je reprezentováno "1" a "0..1".

    Obrázek39

    V takovém případě může nebo nemusí být entita Person přidružená k entitě OfficeAssignment . Entita OfficeAssignment musí být přidružená k entitě Person . Jinými slovy, instruktor může nebo nesmí být přiřazen k kanceláři a každá kancelář může být přiřazena pouze jednomu instruktorovi.

  • Přidružení 1:N je reprezentováno "1" a "*".

    Obrázek 40

    V tomto případě entita Person může nebo nemusí mít přidružené StudentGrade entity. Entita StudentGrade musí být přidružená k jedné Person entitě. StudentGrade entity skutečně představují zapsané kurzy v této databázi; Pokud je student zapsaný do kurzu a ještě nemá známku, Grade je vlastnost null. Jinými slovy, student ještě nesmí být zapsán do žádného kurzu, může být zapsán do jednoho kurzu nebo může být zapsán do více kurzů. Každá známka v zaregistrovaných kurzech se vztahuje pouze na jednoho studenta.

  • Přidružení M:N je reprezentováno "*" a "*".

    Obrázek41

    V tomto případě entita Person může nebo nemusí mít přidružené Course entity a platí to i naopak: entita Course může nebo nemusí mít přidružené Person entity. Jinými slovy, instruktor může vyučovat více kurzů a kurz může vyučovat více instruktorů. (V této databázi se tento vztah vztahuje pouze na instruktory; nespojuje studenty s kurzy. Studenti jsou na kurzy propojeni tabulkou StudentGrades.)

Dalším rozdílem mezi diagramem databáze a datovým modelem je další oddíl Vlastnosti navigace pro každou entitu. Navigační vlastnost entity odkazuje na související entity. Například Courses vlastnost v entitě obsahuje kolekci všech Course entit, které souvisejí s danou PersonPerson entitou.

Obrázek 12

Dalším rozdílem mezi databází a datovým modelem je absence CourseInstructor asociační tabulky, která se v databázi používá k propojení Person tabulek a Course v relaci M:N. Vlastnosti navigace umožňují získat související Course entity z Person entity a souvisejících Person entit z Course entity, takže není nutné reprezentovat asociační tabulku v datovém modelu.

Obrázek 11

Pro účely tohoto kurzu předpokládejme, že FirstName sloupec Person tabulky ve skutečnosti obsahuje křestní jméno a druhé jméno osoby. Chcete změnit název pole tak, aby to odpovídalo, ale správce databáze (DBA) pravděpodobně nebude chtít databázi změnit. Můžete změnit název vlastnosti v datovém FirstName modelu a ponechat její ekvivalent databáze beze změny.

V návrháři klikněte pravým tlačítkem na Jméno v entitě Person a pak vyberte Přejmenovat.

Obrázek 13

Zadejte nový název FirstMidName. Tím se změní způsob, jakým odkazujete na sloupec v kódu, aniž byste změnili databázi.

Obrázek 29

Prohlížeč modelů nabízí další způsob, jak zobrazit strukturu databáze, strukturu datového modelu a mapování mezi nimi. Zobrazí se tak, že v návrháři entit kliknete pravým tlačítkem na prázdnou oblast a pak kliknete na Prohlížeč modelů.

Obrázek 18

V podokně Prohlížeč modelů se zobrazí stromové zobrazení. (Podokno Prohlížeč modelů může být ukotvené s podoknem Průzkumník řešení.) Uzel SchoolModel představuje strukturu datového modelu a uzel SchoolModel.Store představuje strukturu databáze.

Obrázek26

Rozbalte SchoolModel.Store , abyste viděli tabulky, rozbalte Tabulky / zobrazení , abyste viděli tabulky, a pak rozbalte Kurz , abyste viděli sloupce v tabulce.

Obrázek 19

Rozbalte SchoolModel, rozbalte Typy entit a pak rozbalte uzel Kurz , abyste viděli entity a vlastnosti v rámci entit.

Obrázek 20

V podokně Návrhář nebo Prohlížeč modelů můžete vidět, jak Entity Framework spojuje objekty těchto dvou modelů. Klikněte pravým tlačítkem na entitu Person a vyberte Mapování tabulky.

Obrázek 21

Otevře se okno Podrobnosti mapování . Všimněte si, že v tomto okně vidíte, že sloupec FirstName databáze je namapovaný na FirstMidName, což je to, na co jste ho v datovém modelu přejmenovali.

Obrázek 22

Entity Framework používá XML k ukládání informací o databázi, datovém modelu a mapování mezi nimi. Soubor SchoolModel.edmx je ve skutečnosti soubor XML, který obsahuje tyto informace. Návrhář vykreslí informace v grafickém formátu, ale můžete soubor zobrazit také jako XML tak, že kliknete pravým tlačítkem na soubor .edmx v Průzkumník řešení, kliknete na Otevřít v nástroji a vyberete EDITOR XML (Text). (Návrhář datového modelu a editor XML jsou pouze dva různé způsoby, jak otevřít a pracovat se stejným souborem, takže návrhář nemůže současně otevřít soubor v editoru XML.)

Teď jste vytvořili web, databázi a datový model. V dalším návodu začnete pracovat s daty pomocí datového modelu a ovládacího prvku ASP.NET EntityDataSource .