Model First
V tomto videu a podrobném návodu najdete úvod k vývoji Model First pomocí Entity Frameworku. Model First umožňuje vytvořit nový model pomocí Návrháře entity Framework a pak vygenerovat schéma databáze z modelu. Model je uložený v souboru EDMX (přípona .edmx) a lze ho zobrazit a upravit v Návrháři entity Framework. Třídy, se kterými pracujete ve vaší aplikaci, se automaticky vygenerují ze souboru EDMX.
Přehrát video
V tomto videu a podrobném návodu najdete úvod k vývoji Model First pomocí Entity Frameworku. Model First umožňuje vytvořit nový model pomocí Návrháře entity Framework a pak vygenerovat schéma databáze z modelu. Model je uložený v souboru EDMX (přípona .edmx) a lze ho zobrazit a upravit v Návrháři entity Framework. Třídy, se kterými pracujete ve vaší aplikaci, se automaticky vygenerují ze souboru EDMX.
Autor: Rowan Miller
Předpoklady
K dokončení tohoto návodu budete muset mít nainstalovanou sadu Visual Studio 2010 nebo Visual Studio 2012.
Pokud používáte Visual Studio 2010, budete také muset mít nainstalovaný NuGet .
1. Vytvoření aplikace
Abychom měli všechno jednoduché, vytvoříme základní konzolovou aplikaci, která k provádění přístupu k datům používá model First:
- Otevřete sadu Visual Studio.
- Soubor -> Nový -> Projekt...
- V nabídce vlevo vyberte Windows a konzolovou aplikaci.
- Jako název zadejte ModelFirstSample .
- Vyberte OK.
2. Vytvoření modelu
K vytvoření modelu použijeme Návrhář entity Framework, který je součástí sady Visual Studio.
Projekt –> přidat novou položku...
V nabídce vlevo vyberte Data a pak ADO.NET Entity Data Model.
Jako název zadejte BloggingModel a klikněte na OK. Tím se spustí Průvodce modelem Entity Data Model.
Vyberte prázdný model a klikněte na Dokončit.
Návrhář Entity Framework je otevřen s prázdným modelem. Teď můžeme do modelu začít přidávat entity, vlastnosti a přidružení.
Klikněte pravým tlačítkem myši na návrhovou plochu a vyberte Vlastnosti.
V okno Vlastnosti změnit název kontejneru entity na BloggingContextToto je název odvozeného kontextu, který se pro vás vygeneruje, kontext představuje relaci s databází, což nám umožňuje dotazovat a ukládat data.
Klikněte pravým tlačítkem myši na návrhovou plochu a vyberte Přidat nový -> Entita...
Jako název entity zadejte blog a jako název klíče zadejte Id blogu a klikněte na OK.
Klikněte pravým tlačítkem myši na novou entitu na návrhové ploše a vyberte Přidat novou> – skalární vlastnost, jako název vlastnosti zadejte Název .
Tento proces opakujte, pokud chcete přidat vlastnost Url .
Klikněte pravým tlačítkem myši na vlastnost Url na návrhové ploše a vyberte Vlastnosti, v okno Vlastnosti změnit nastavení Nullable na True. To nám umožňuje uložit blog do databáze bez přiřazení adresy URL.
Pomocí technik, které jste se právě naučili, přidejte entitu Post s vlastností klíče PostId .
Přidání skalárních vlastností nadpisu a obsahu do entity Post
Když teď máme několik entit, je čas mezi ně přidat přidružení (nebo relaci).
Klikněte pravým tlačítkem na návrhovou plochu a vyberte Přidat nový -> Přidružení...
Nastavte jeden konec relace na Blog s násobností jednoho a druhého koncového bodu publikovat s násobností MnohoTo znamená, že blog má mnoho příspěvků a příspěvek patří do jednoho blogu.
Ujistěte se, že je zaškrtnuté políčko Přidat vlastnosti cizího klíče do pole Publikovat entitu , a klikněte na OK.
Teď máme jednoduchý model, ze kterého můžeme vygenerovat databázi a použít ji ke čtení a zápisu dat.
Další kroky v sadě Visual Studio 2010
Pokud pracujete v sadě Visual Studio 2010, je potřeba provést několik dalších kroků pro upgrade na nejnovější verzi Entity Frameworku. Upgrade je důležitý, protože poskytuje přístup k vylepšenému povrchu rozhraní API, který je mnohem jednodušší používat a také nejnovější opravy chyb.
Nejprve musíme získat nejnovější verzi Entity Frameworku z NuGetu.
- Projekt –> Správa balíčků NuGet...Pokud nemáte možnost Spravovat balíčky NuGet... měli byste nainstalovat nejnovější verzi NuGetu.
- Výběr karty Online
- Výběr balíčku EntityFramework
- Klikněte na Nainstalovat.
Dále musíme prohodit náš model tak, aby vygeneroval kód, který využívá rozhraní DBContext API, které bylo zavedeno v novějších verzích Entity Frameworku.
Klikněte pravým tlačítkem na prázdné místo modelu v nástroji EF Designer a vyberte Přidat položku generování kódu...
V nabídce vlevo vyberte online šablony a vyhledejte DbContext.
Vyberte generátor EF 5.x DbContext pro C#, jako název zadejte BloggingModel a klikněte na Přidat.
3. Generování databáze
Vzhledem k našemu modelu může Entity Framework vypočítat schéma databáze, které nám umožní ukládat a načítat data pomocí modelu.
Databázový server nainstalovaný se sadou Visual Studio se liší v závislosti na nainstalované verzi sady Visual Studio:
- Pokud používáte Visual Studio 2010, budete vytvářet databázi SQL Express.
- Pokud používáte Visual Studio 2012, budete vytvářet databázi LocalDB .
Pojďme pokračovat a vygenerovat databázi.
Klikněte pravým tlačítkem na návrhovou plochu a vyberte Vygenerovat databázi z modelu...
Klikněte na Tlačítko Nový Připojení ion... a zadejte localDB nebo SQL Express v závislosti na tom, jakou verzi sady Visual Studio používáte, zadejte název databáze ModelFirst.Blogging.
Vyberte OK a zobrazí se dotaz, jestli chcete vytvořit novou databázi, vyberte Ano.
Vyberte Další a Návrhář Entity Framework vypočítá skript pro vytvoření schématu databáze.
Jakmile se skript zobrazí, klikněte na Dokončit a skript se přidá do projektu a otevře se.
Klikněte pravým tlačítkem na skript a vyberte Spustit, zobrazí se výzva k zadání databáze pro připojení, zadání LocalDB nebo SQL Serveru Express v závislosti na tom, jakou verzi sady Visual Studio používáte.
4. Čtení a zápis dat
Teď, když máme model, je čas ho použít pro přístup k některým datům. Třídy, které použijeme pro přístup k datům, se automaticky generují na základě souboru EDMX.
Tento snímek obrazovky pochází ze sady Visual Studio 2012, pokud používáte sadu Visual Studio 2010, budou soubory BloggingModel.tt a BloggingModel.Context.tt přímo v projektu, nikoli vnořené do souboru EDMX.
Implementujte metodu Main v souboru Program.cs, jak je znázorněno níže. Tento kód vytvoří novou instanci našeho kontextu a pak ji použije k vložení nového blogu. Potom pomocí dotazu LINQ načte všechny blogy z databáze seřazené abecedně podle názvu.
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();
}
}
}
Teď můžete aplikaci spustit a otestovat ji.
Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...
5. Práce se změnami modelu
Teď je čas provést nějaké změny modelu, když provedeme tyto změny, potřebujeme také aktualizovat schéma databáze.
Začneme přidáním nové entity User do našeho modelu.
Přidání nového uživatelského názvu entity s uživatelským jménem jako názvem klíče a řetězcem jako typem vlastnosti pro klíč
Klikněte pravým tlačítkem myši na vlastnost Uživatelské jméno na návrhové ploše a vyberte Vlastnosti, v okno Vlastnosti změnit nastavení MaxLength na 50To omezuje data, která lze uložit v uživatelském jménu na 50 znaků.
Přidání skalární vlastnosti DisplayName do entity User
Nyní máme aktualizovaný model a jsme připraveni aktualizovat databázi tak, aby vyhovovala našemu novému typu entity Uživatel.
- Klikněte pravým tlačítkem myši na návrhovou plochu a vyberte Vygenerovat databázi z modelu..., Entity Framework vypočítá skript pro opětovné vytvoření schématu na základě aktualizovaného modelu.
- Klikněte na Dokončit.
- Může se zobrazit upozornění týkající se přepsání existujícího skriptu DDL a mapování a částí úložiště modelu. U obou těchto upozornění klikněte na Ano .
- Aktualizovaný skript SQL pro vytvoření databáze se otevře za vás.
Vygenerovaný skript zahodí všechny existující tabulky a pak znovu vytvoří schéma od nuly. To může fungovat pro místní vývoj, ale není možné nasdílit změny do databáze, která již byla nasazena. Pokud potřebujete publikovat změny v databázi, která už je nasazená, budete muset skript upravit nebo použít nástroj pro porovnání schématu k výpočtu skriptu migrace. - Klikněte pravým tlačítkem na skript a vyberte Spustit, zobrazí se výzva k zadání databáze pro připojení, zadání LocalDB nebo SQL Serveru Express v závislosti na tom, jakou verzi sady Visual Studio používáte.
Shrnutí
V tomto názorném postupu jsme se podívali na vývoj modelu First, který nám umožnil vytvořit model v EF Designeru a pak vygenerovat databázi z tohoto modelu. Pak jsme použili model ke čtení a zápisu některých dat z databáze. Nakonec jsme model aktualizovali a pak znovu vytvořili schéma databáze tak, aby odpovídalo modelu.