První databáze
Toto video a podrobný návod poskytují úvod do vývoje služby Database First pomocí Entity Frameworku. Database First umožňuje zpětnou analýzu modelu z existující databáze. 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
Toto video obsahuje úvod do vývoje služby Database First pomocí Entity Frameworku. Database First umožňuje zpětnou analýzu modelu z existující databáze. 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 alespoň 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í existující databáze
Obvykle platí, že když cílíte na existující databázi, bude již vytvořena, ale pro účely tohoto názorného postupu potřebujeme vytvořit databázi pro přístup.
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.
Otevřete sadu Visual Studio.
Zobrazení –> Průzkumník serveru
Klikněte pravým tlačítkem na Připojení iony dat –> přidat Připojení ion...
Pokud jste se ještě nepřipojili k databázi z Průzkumníka serveru, musíte jako zdroj dat vybrat Microsoft SQL Server.
Připojení do LocalDB nebo SQL Express v závislosti na tom, který máte nainstalovaný, a zadejte DatabaseFirst.Blogging jako název databáze
Vyberte OK a zobrazí se dotaz, jestli chcete vytvořit novou databázi, vyberte Ano.
Nová databáze se teď zobrazí v Průzkumníku serveru, klikněte na ni pravým tlačítkem myši a vyberte Nový dotaz.
Zkopírujte následující SQL do nového dotazu, klikněte pravým tlačítkem myši na dotaz a vyberte Spustit.
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (200) NULL,
[Url] NVARCHAR (200) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);
2. 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á Database First:
- Otevřete sadu Visual Studio.
- Soubor -> Nový -> Projekt...
- V nabídce vlevo vyberte Windows a konzolovou aplikaci.
- Jako název zadejte DatabaseFirstSample .
- Vyberte OK.
3. Model zpětné analýzy
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 datovým modelem entity.
Vyberte Vygenerovat z databáze a klikněte na Další.
Vyberte připojení k databázi, kterou jste vytvořili v první části, jako název připojovací řetězec zadejte BloggingContext a klikněte na Další.
Kliknutím na zaškrtávací políčko vedle tabulky naimportujete všechny tabulky a kliknete na Dokončit.
Jakmile proces zpětné analýzy dokončí nový model, přidá se do projektu a otevře se vám zobrazení v Návrháři entity Framework. Do projektu byl přidán také soubor App.config s podrobnostmi o připojení pro databázi.
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.
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 databáze
Teď je čas provést nějaké změny schématu databáze, když provedeme tyto změny, musíme také aktualizovat model tak, aby odrážel tyto změny.
Prvním krokem je provedení některých změn schématu databáze. Do schématu přidáme tabulku Users.
- V Průzkumníku serveru klikněte pravým tlačítkem na databázi DatabaseFirst.Blogging a vyberte Nový dotaz.
- Zkopírujte následující SQL do nového dotazu, klikněte pravým tlačítkem myši na dotaz a vyberte Spustit.
CREATE TABLE [dbo].[Users]
(
[Username] NVARCHAR(50) NOT NULL PRIMARY KEY,
[DisplayName] NVARCHAR(MAX) NULL
)
Teď, když je schéma aktualizované, je čas model aktualizovat těmito změnami.
Klikněte pravým tlačítkem myši na prázdné místo modelu v nástroji EF Designer a vyberte Aktualizovat model z databáze. Tím se spustí Průvodce aktualizací.
Na kartě Přidat v Průvodci aktualizací zaškrtněte políčko vedle tabulek, to znamená, že chceme přidat všechny nové tabulky ze schématu. Na kartě Aktualizovat se zobrazí všechny existující tabulky v modelu, u které se budou kontrolovat změny během aktualizace. Na kartách Odstranit se zobrazují všechny tabulky, které byly ze schématu odebrány, a v rámci aktualizace se také odeberou z modelu. Informace na těchtodvouch zařízeních se automaticky zjistí a zobrazí se pouze pro informační účely.
Klikněte na Dokončit v Průvodci aktualizací.
Model se teď aktualizuje tak, aby zahrnoval novou entitu User, která se mapuje na tabulku Users, kterou jsme přidali do databáze.
Shrnutí
V tomto názorném postupu jsme se podívali na vývoj služby Database First, který nám umožnil vytvořit model v EF Designeru na základě existující databáze. Tento model jsme pak použili ke čtení a zápisu dat z databáze. Nakonec jsme model aktualizovali tak, aby odrážel změny provedené ve schématu databáze.