Začínáme se službou Entity Framework 4.0 Database First a Web Forms ASP.NET 4
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žívalObjectContext
rozhraní API. Informace o použití ovládacího prvku EntityDataSource s rozhraním API najdete vDbContext
tomto 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.
Uživatelé můžou zobrazit a aktualizovat informace o studentech, kurzech a instruktorech. Několik obrazovek, které vytvoříte, najdete níže.
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 :
Tato šablona vytvoří projekt webové aplikace, který už obsahuje šablonu stylů a stránky předlohy:
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:
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:
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.
Vyberte všechny tabulky a klikněte na Přidat.
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.
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.
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):
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.
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ší).
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.
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.
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.)
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".
V takovém případě může nebo nemusí být entita
Person
přidružená k entitěOfficeAssignment
. EntitaOfficeAssignment
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 "*".
V tomto případě entita
Person
může nebo nemusí mít přidruženéStudentGrade
entity. EntitaStudentGrade
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 "*".
V tomto případě entita
Person
může nebo nemusí mít přidruženéCourse
entity a platí to i naopak: entitaCourse
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 Person
Person
entitou.
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.
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.
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.
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ů.
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.
Rozbalte SchoolModel.Store , abyste viděli tabulky, rozbalte Tabulky / zobrazení , abyste viděli tabulky, a pak rozbalte Kurz , abyste viděli sloupce v tabulce.
Rozbalte SchoolModel, rozbalte Typy entit a pak rozbalte uzel Kurz , abyste viděli entity a vlastnosti v rámci entit.
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.
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.
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
.