ASP.NET MVC 4 – modely a přístup k datům
Autor: Web Camp Team
Stáhnout Web Camp Training Kit
V tomto praktickém cvičení se předpokládá, že máte základní znalosti ASP.NET MVC. Pokud jste předtím nepoužívali ASP.NET MVC, doporučujeme vám projít si praktické cvičení ASP.NET MVC 4.
Toto cvičení vás provede vylepšeními a novými funkcemi, které jsme dříve popsali použitím menších změn ukázkové webové aplikace poskytované ve složce Source.
Poznámka:
Všechny ukázkové kódy a fragmenty kódu jsou součástí sady Web Camp Training Kit, která je k dispozici ve verzích Microsoft-Web/WebCampTrainingKit. Projekt specifický pro toto cvičení je k dispozici na ASP.NET modelech MVC 4 a přístupu k datům.
V ASP.NET MVC Fundamentals Hands-on Lab jste předávali pevně zakódovaná data ze kontrolerů do šablon zobrazení. Pokud ale chcete vytvořit skutečnou webovou aplikaci, můžete chtít použít skutečnou databázi.
V tomto praktickém cvičení se dozvíte, jak pomocí databázového stroje ukládat a načítat data potřebná pro aplikaci Music Store. Abyste toho dosáhli, začnete s existující databází a vytvoříte z ní model Entity Data Model. V tomto cvičení se seznámíte s přístupem Database First a také s přístupem Code First.
Můžete ale také použít přístup Model First , vytvořit stejný model pomocí nástrojů a pak z něj vygenerovat databázi.
Database First vs. Model First
Po vygenerování modelu provedete správné úpravy v StoreController, aby zobrazení úložiště poskytovala data převzatá z databáze místo použití pevně zakódovaných dat. V šablonách zobrazení nebudete muset provádět žádné změny, protože StoreController vrátí stejné modely ViewModels do šablon zobrazení, i když tentokrát data pocházejí z databáze.
První přístup kódu
Přístup Code First nám umožňuje definovat model z kódu bez generování tříd, které jsou obecně spojené s architekturou.
V kódu jsou nejprve objekty modelu definovány pomocí objektů POCOs, "Plain Old CLR Objects". PoCOs jsou jednoduché prosté třídy, které nemají žádnou dědičnost a neimplementují rozhraní. Můžeme z nich automaticky vygenerovat databázi, nebo můžeme použít existující databázi a vygenerovat mapování tříd z kódu.
Výhodou použití tohoto přístupu je, že model zůstává nezávislý na rozhraní trvalosti (v tomto případě Entity Framework), protože třídy poCOs nejsou svázány s architekturou mapování.
Poznámka:
Toto cvičení je založeno na ASP.NET MVC 4 a verzi ukázkové aplikace Music Store přizpůsobenou a minimalizovanou tak, aby vyhovovala pouze funkcím zobrazeným v tomto praktickém cvičení.
Pokud chcete prozkoumat celou výukovou aplikaci Music Store , najdete ji v MVC-Music-Store.
Požadavky
K dokončení tohoto cvičení musíte mít následující položky:
- Microsoft Visual Studio Express 2012 pro web nebo superior (pokyny k instalaci najdete v dodatku A ).
Nastavení
Instalace fragmentů kódu
Pro usnadnění práce je většina kódu, který budete spravovat v tomto cvičení, k dispozici jako fragmenty kódu sady Visual Studio. Chcete-li nainstalovat fragmenty kódu, spusťte soubor .\Source\Setup\CodeSnippets.vsi .
Pokud nemáte zkušenosti s fragmenty kódu sady Visual Studio Code a chcete se naučit, jak je používat, můžete odkazovat na dodatek z tohoto dokumentu "Příloha C: Použití fragmentů kódu".
Cvičení
Toto praktické cvičení se skládá z následujících cvičení:
- Cvičení 1: Přidání databáze
- Cvičení 2: Vytvoření databáze pomocí code First
- Cvičení 3: Dotazování databáze s parametry
Poznámka:
Každé cvičení je doprovázeno koncovou složkou obsahující výsledné řešení, které byste měli získat po dokončení cvičení. Toto řešení můžete použít jako vodítko, pokud potřebujete další pomoc s prací ve cvičeních.
Odhadovaná doba dokončení tohoto cvičení: 35 minut.
Cvičení 1: Přidání databáze
V tomto cvičení se dozvíte, jak do řešení přidat databázi s tabulkami aplikace MusicStore, aby bylo možné využívat její data. Jakmile se databáze vygeneruje pomocí modelu a přidáte do řešení, upravíte třídu StoreController tak, aby poskytovala šablonu View s daty převzatými z databáze místo použití pevně zakódovaných hodnot.
Úkol 1 – přidání databáze
V této úloze přidáte do řešení již vytvořenou databázi s hlavními tabulkami aplikace MusicStore.
Otevřete řešení Begin umístěné ve složce Source/Ex1-AddingADatabaseDBFirst/Begin/.
Než budete pokračovat, budete si muset stáhnout některé chybějící balíčky NuGet. Uděláte to tak, že kliknete na nabídku Projekt a vyberete Spravovat balíčky NuGet.
V dialogovém okně Spravovat balíčky NuGet klikněte na Obnovit , aby se stáhly chybějící balíčky.
Nakonec řešení sestavíte kliknutím na Sestavit | řešení.
Poznámka:
Jednou z výhod použití NuGetu je, že nemusíte dodávat všechny knihovny v projektu, což snižuje velikost projektu. Pomocí Nástrojů NuGet Power Tools zadáte verze balíčků v souboru Packages.config, budete moci stáhnout všechny požadované knihovny při prvním spuštění projektu. Proto budete muset tyto kroky spustit po otevření existujícího řešení z tohoto testovacího prostředí.
Přidejte soubor databáze MvcMusicStore . V tomto praktickém cvičení použijete již vytvořenou databázi s názvem MvcMusicStore.mdf. Uděláte to tak, že kliknete pravým tlačítkem na App_Data složku, přejdete na příkaz Přidat a potom kliknete na Položku Existující. Přejděte na \Source\Assets a vyberte soubor MvcMusicStore.mdf .
Přidání existující položky
soubor databáze MvcMusicStore.mdf
Databáze byla přidána do projektu. I když se databáze nachází uvnitř řešení, můžete ji dotazovat a aktualizovat tak, jak byla hostovaná na jiném databázovém serveru.
Databáze MvcMusicStore v Průzkumník řešení
Ověřte připojení k databázi. Uděláte to tak, že poklikáním na MvcMusicStore.mdf navážete připojení.
Připojení k MvcMusicStore.mdf
Úkol 2 – vytvoření datového modelu
V této úloze vytvoříte datový model pro interakci s databází přidanou v předchozím úkolu.
Vytvořte datový model, který bude představovat databázi. Chcete-li to provést, v Průzkumník řešení klepněte pravým tlačítkem myši na složku Modely přejděte na příkaz Přidat a klepněte na tlačítko Nová položka. V dialogovém okně Přidat novou položku vyberte šablonu Data a potom položku ADO.NET Entity Data Model . Změňte název datového modelu na StoreDB.edmx a klikněte na Přidat.
Přidání datového modelu entity ADO.NET StoreDB
Zobrazí se Průvodce datovým modelem entity. Tento průvodce vás provede vytvořením vrstvy modelu. Vzhledem k tomu, že model by měl být vytvořen na základě existující databáze nedávno přidané, vyberte Vygenerovat z databáze a klepněte na tlačítko Další.
Výběr obsahu modelu
Vzhledem k tomu, že generujete model z databáze, budete muset zadat připojení, které se má použít. Klikněte na Nové připojení.
Vyberte soubor databáze Microsoft SQL Serveru a klikněte na Pokračovat.
Dialogové okno Zvolit zdroj dat
Klepněte na tlačítko Procházet a vyberte databázi MvcMusicStore.mdf , kterou jste se nachází ve složce App_Data a klepněte na tlačítko OK.
Vlastnosti připojení
Vygenerovaná třída by měla mít stejný název jako entita připojovací řetězec, proto změňte její název na MusicStoreEntities a klikněte na Další.
Volba datového připojení
Zvolte databázové objekty, které chcete použít. Vzhledem k tomu, že Entity Model bude používat pouze tabulky databáze, vyberte možnost Tabulky a ujistěte se, že jsou vybrané také možnosti Zahrnout sloupce cizího klíče v modelu a vygenerované názvy objektů v pluralizaci nebo jednotné číslo. Změňte obor názvů modelu na MvcMusicStore.Model a klikněte na Dokončit.
Výběr databázových objektů
Poznámka:
Pokud se zobrazí dialogové okno Upozornění zabezpečení, kliknutím na tlačítko OK spusťte šablonu a vygenerujte třídy pro entity modelu.
Zobrazí se diagram entity pro databázi, zatímco se vytvoří samostatná třída, která mapuje každou tabulku na databázi. Například tabulka Alba bude reprezentována třídou Album , kde se každý sloupec v tabulce mapuje na vlastnost třídy. To vám umožní dotazovat se na objekty, které představují řádky v databázi, a pracovat s těmito objekty.
Diagram entit
Poznámka:
Šablony T4 (.tt) spouští kód pro generování tříd entit a přepíšou existující třídy se stejným názvem. V tomto příkladu byly třídy Album, Žánr a Interpret přepsány vygenerovaným kódem.
Úkol 3 – sestavení aplikace
V tomto úkolu zkontrolujete, že i když generování modelu odebralo třídy modelů Album, Žánr a Interpret , projekt se úspěšně sestaví pomocí nových tříd datového modelu.
Sestavte projekt tak , že vyberete položku nabídky Sestavení a potom Build MvcMusicStore.
Sestavení projektu
Projekt se úspěšně sestaví. Proč to pořád funguje? Funguje to proto, že databázové tabulky obsahují pole obsahující vlastnosti, které jste používali v odebraných třídách Album a Žánr.
Sestavení byla úspěšná.
Zatímco návrhář zobrazuje entity ve formátu diagramu, jsou to skutečně třídy jazyka C#. Rozbalte uzel StoreDB.edmx v Průzkumník řešení a pak StoreDB.tt, zobrazí se nové vygenerované entity.
Vygenerované soubory
Úkol 4 – Dotazování databáze
V této úloze aktualizujete třídu StoreController tak, aby místo použití pevně zakódovaných dat dotazovala databázi, aby načetla informace.
Otevřete Controllers\StoreController.cs a přidejte do třídy následující pole pro uložení instance Třídy MusicStoreEntities s názvem storeDB:
(Fragment kódu – Modely a přístup k datům – Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities();
MusicStoreEntities třída zveřejňuje vlastnost kolekce pro každou tabulku v databázi. Aktualizujte metodu akce Procházet , abyste získali žánr se všemi alby.
(Fragment kódu – Modely a přístup k datům – Procházení ex1 Storu)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }
Poznámka:
K zápisu výrazů dotazu silného typu do těchto kolekcí používáte funkci .NET, která se nazývá LINQ (dotaz integrovaný v jazyce), což spustí kód proti databázi a vrátí objekty, proti kterým můžete programovat.
Další informace o LINQ naleznete na webu msdn.
Aktualizujte metodu akce indexu pro načtení všech žánrů.
(Fragment kódu – Modely a přístup k datům – Index úložiště Ex1)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }
Aktualizujte metodu akce indexu , aby načetla všechny žánry a transformovala kolekci na seznam.
(Fragment kódu – Modely a přístup k datům – Ex1 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Úloha 5 – spuštění aplikace
V této úloze zkontrolujete, že se na stránce Index úložiště zobrazí žánry uložené v databázi místo pevně zakódovaných. Šablonu zobrazení není nutné měnit, protože StoreController vrací stejné entity jako předtím, i když tentokrát data pocházejí z databáze.
Znovu sestavte řešení a stisknutím klávesy F5 spusťte aplikaci.
Projekt začíná na domovské stránce. Ověřte, že nabídka Žánrů už není pevně zakódovaný seznam a data se přímo načítají z databáze.
Procházení žánrů z databáze
Teď přejděte do libovolného žánru a ověřte, že se alba naplní z databáze.
Procházení alb z databáze
Cvičení 2: Vytvoření databáze pomocí kódu first
V tomto cvičení se dozvíte, jak pomocí přístupu Code First vytvořit databázi s tabulkami aplikace MusicStore a jak získat přístup k datům.
Jakmile se model vygeneruje, upravíte StoreController tak, aby poskytoval šablonu Zobrazení s daty převzatými z databáze místo použití pevně zakódovaných hodnot.
Poznámka:
Pokud jste dokončili cvičení 1 a už jste pracovali s přístupem Database First, dozvíte se, jak získat stejné výsledky jiným procesem. Úkoly, které jsou společné s cvičením 1, byly označeny, aby bylo čtení jednodušší. Pokud jste cvičení 1 ještě nedokončili, ale chtěli byste se seznámit s přístupem Code First, můžete začít z tohoto cvičení a získat úplné pokrytí tématu.
Úkol 1 – naplnění ukázkových dat
V této úloze naplníte databázi ukázkovými daty při počátečním vytvoření pomocí code-First.
Otevřete řešení Begin umístěné ve složce Source/Ex2-CreatingADatabaseCodeFirst/Begin/. Jinak můžete pokračovat v používání koncového řešení získaného dokončením předchozího cvičení.
Pokud jste otevřeli poskytnuté řešení Begin , budete si muset před pokračováním stáhnout některé chybějící balíčky NuGet. Uděláte to tak, že kliknete na nabídku Projekt a vyberete Spravovat balíčky NuGet.
V dialogovém okně Spravovat balíčky NuGet klikněte na Obnovit , aby se stáhly chybějící balíčky.
Nakonec řešení sestavíte kliknutím na Sestavit | řešení.
Poznámka:
Jednou z výhod použití NuGetu je, že nemusíte dodávat všechny knihovny v projektu, což snižuje velikost projektu. Pomocí Nástrojů NuGet Power Tools zadáte verze balíčků v souboru Packages.config, budete moci stáhnout všechny požadované knihovny při prvním spuštění projektu. Proto budete muset tyto kroky spustit po otevření existujícího řešení z tohoto testovacího prostředí.
Přidejte soubor SampleData.cs do složky Models. Uděláte to tak, že kliknete pravým tlačítkem myši na složku Modely, přejdete na příkaz Přidat a potom kliknete na položku Existující položka. Přejděte na \Source\Assets a vyberte soubor SampleData.cs .
Naplnění kódu ukázkovými daty
Otevřete soubor Global.asax.cs a přidejte následující příkazy using.
(Fragment kódu – Modely a přístup k datům – použití Ex2 Global Asax)
using MvcMusicStore.Models; using System.Data.Entity;
Do metody Application_Start() přidejte následující řádek pro nastavení inicializátoru databáze.
(Fragment kódu – Modely a přístup k datům – Ex2 Global Asax SetInitializer)
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); Database.SetInitializer(new SampleData()); }
Úloha 2 – Konfigurace připojení k databázi
Teď, když jste do projektu přidali databázi, zapíšete do souboru Web.config připojovací řetězec.
Přidejte připojovací řetězec na web.config. Uděláte to tak, že otevřete web.config v kořenovém adresáři projektu a nahradíte připojovací řetězec s názvem DefaultConnection tímto řádkem v< části connectionStrings>:
Umístění souboru Web.config
<configuration> ... <connectionStrings> <add name="MusicStoreEntities" connectionString="data source=(LocalDb)\v11.0;initial catalog=MvcMusicStore;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf" providerName="System.Data.SqlClient" /> </connectionStrings> ...
Úkol 3 – práce s modelem
Teď, když jste už nakonfigurovali připojení k databázi, propočítáte model s tabulkami databáze. V této úloze vytvoříte třídu, která bude propojena s databází pomocí code First. Mějte na paměti, že existuje existující třída modelu POCO, která by se měla upravit.
Poznámka:
Pokud jste dokončili cvičení 1, všimněte si, že tento krok provedl průvodce. Pomocí kódu First ručně vytvoříte třídy, které budou propojeny s datovými entitami.
Otevřete třídu modelu POCO Ze složky projektu Models a zadejte ID. Použijte vlastnost int s názvem GenreId.
(Fragment kódu – Modely a přístup k datům – Ex2 Code First Žánr)
namespace MvcMusicStore.Models { using System.Collections.Generic; public class Genre { public int GenreId { get; set; } public string Name { get; set; } public string Description { get; set; } public List<Album> Albums { get; set; } } }
Poznámka:
Aby bylo možné pracovat s konvencemi Code First, třída Žánr musí mít vlastnost primárního klíče, která bude automaticky zjištěna.
Další informace o konvencích Code First najdete v tomto článku msdn.
Nyní otevřete třídu modelu POCO Album ze složky projektu Models a zahrňte cizí klíče, vytvořte vlastnosti s názvy ŽánrId a ArtistId. Tato třída již má Id žánru pro primární klíč.
(Fragment kódu – Modely a přístup k datům – první album s kódem Ex2)
namespace MvcMusicStore.Models { public class Album { public int AlbumId { get; set; } public int GenreId { get; set; } public int ArtistId { get; set; } public string Title { get; set; } public decimal Price { get; set; } public string AlbumArtUrl { get; set; } public virtual Genre Genre { get; set; } public virtual Artist Artist { get; set; } } }
Otevřete třídu modelu POCO Artist a zahrnout ArtistId vlastnost.
(Fragment kódu – Modely a přístup k datům – Ex2 Code First Artist)
namespace MvcMusicStore.Models { public class Artist { public int ArtistId { get; set; } public string Name { get; set; } } }
Klikněte pravým tlačítkem myši na složku projektu Modely a vyberte Přidat | Třída. Pojmenujte soubor MusicStoreEntities.cs. Potom klikněte na Přidat.
Přidání nové položky
Přidání třídy
Otevřete právě vytvořenou třídu, MusicStoreEntities.cs a zahrňte obory názvů System.Data.Entity a System.Data.Entity.Entity.Infrastructure.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; ...
Nahraďte deklaraci třídy pro rozšíření DbContext třídy: deklarujte veřejnou DBSet a přepsání OnModelCreating metoda. Po tomto kroku získáte třídu domény, která propoří váš model s Entity Framework. Pokud to chcete udělat, nahraďte kód třídy následujícím kódem:
(Fragment kódu – Modely a přístup k datům – Ex2 Code First MusicStoreEntities)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace MvcMusicStore.Models { public class MusicStoreEntities : DbContext { public DbSet<Genre> Genres { get; set; } public DbSet<Album> Albums { get; set; } public DbSet<Artist> Artists { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Genre>().ToTable("Genres"); modelBuilder.Entity<Album>().ToTable("Albums"); modelBuilder.Entity<Artist>().ToTable("Artists"); base.OnModelCreating(modelBuilder); } } }
Poznámka:
S Entity Framework DbContext a DBSet budete moci dotazovat poco třídy Žánr. Rozšířením metody OnModelCreating zadáte v kódu, jakým způsobem bude Žánr mapován na tabulku databáze. Další informace o DBContext a DBSet najdete v tomto článku msdn: odkaz
Úkol 4 – Dotazování databáze
V této úloze aktualizujete třídu StoreController tak, aby místo použití pevně zakódovaných dat ji načetla z databáze.
Poznámka:
Tento úkol je společný s cvičením 1.
Pokud jste dokončili cvičení 1, všimněte si, že tyto kroky jsou v obou přístupech stejné (první databáze nebo kód). Liší se v tom, jak jsou data propojená s modelem, ale přístup k entitě dat je z kontroleru ještě transparentní.
Otevřete Controllers\StoreController.cs a přidejte do třídy následující pole pro uložení instance Třídy MusicStoreEntities s názvem storeDB:
(Fragment kódu – Modely a přístup k datům – Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities(); ... }
MusicStoreEntities třída zveřejňuje vlastnost kolekce pro každou tabulku v databázi. Aktualizujte metodu akce Procházet , abyste získali žánr se všemi alby.
(Fragment kódu – Modely a přístup k datům – Procházení ex2 Storu)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }
Poznámka:
K zápisu výrazů dotazu silného typu do těchto kolekcí používáte funkci .NET, která se nazývá LINQ (dotaz integrovaný v jazyce), což spustí kód proti databázi a vrátí objekty, proti kterým můžete programovat.
Další informace o LINQ naleznete na webu msdn.
Aktualizujte metodu akce indexu pro načtení všech žánrů.
(Fragment kódu – Modely a přístup k datům – Index úložiště Ex2)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }
Aktualizujte metodu akce indexu , aby načetla všechny žánry a transformovala kolekci na seznam.
(Fragment kódu – Modely a přístup k datům – Ex2 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Úloha 5 – spuštění aplikace
V této úloze zkontrolujete, že se na stránce Index úložiště zobrazí žánry uložené v databázi místo pevně zakódovaných. Šablonu Zobrazení není nutné měnit, protože StoreController vrací stejný StoreIndexViewModel jako předtím, ale tentokrát data pocházejí z databáze.
Znovu sestavte řešení a stisknutím klávesy F5 spusťte aplikaci.
Projekt začíná na domovské stránce. Ověřte, že nabídka Žánrů už není pevně zakódovaný seznam a data se přímo načítají z databáze.
Procházení žánrů z databáze
Teď přejděte do libovolného žánru a ověřte, že se alba naplní z databáze.
Procházení alb z databáze
Cvičení 3: Dotazování databáze s parametry
V tomto cvičení se dozvíte, jak dotazovat databázi pomocí parametrů a jak použít formování výsledků dotazu, což je funkce, která snižuje počet přístupů k databázi načítání dat efektivnějším způsobem.
Poznámka:
Další informace o formování výsledků dotazu najdete v následujícím článku msdn.
Úkol 1 – úprava StoreController pro načtení alb z databáze
V této úloze změníte třídu StoreController tak, aby přistupovala k databázi a načítala alba z určitého žánru.
Otevřete řešení Begin umístěné ve složce Source\Ex3-QueryingTheDatabaseWithParametersCodeFirst\Begin, pokud chcete použít přístup Code-First nebo Source\Ex3-QueryingTheDatabaseWithParametersDBFirst\Begin, pokud chcete použít přístup Database-First. Jinak můžete pokračovat v používání koncového řešení získaného dokončením předchozího cvičení.
Pokud jste otevřeli poskytnuté řešení Begin , budete si muset před pokračováním stáhnout některé chybějící balíčky NuGet. Uděláte to tak, že kliknete na nabídku Projekt a vyberete Spravovat balíčky NuGet.
V dialogovém okně Spravovat balíčky NuGet klikněte na Obnovit , aby se stáhly chybějící balíčky.
Nakonec řešení sestavíte kliknutím na Sestavit | řešení.
Poznámka:
Jednou z výhod použití NuGetu je, že nemusíte dodávat všechny knihovny v projektu, což snižuje velikost projektu. Pomocí Nástrojů NuGet Power Tools zadáte verze balíčků v souboru Packages.config, budete moci stáhnout všechny požadované knihovny při prvním spuštění projektu. Proto budete muset tyto kroky spustit po otevření existujícího řešení z tohoto testovacího prostředí.
Otevřete StoreController třídy změnit Procházet action metoda. Uděláte to tak, že v Průzkumník řešení rozbalíte složku Kontrolery a poklikejte na StoreController.cs.
Změňte metodu akce Procházet a načtěte alba pro určitý žánr. Uděláte to tak, že nahradíte následující kód:
(Fragment kódu – Modely a přístup k datům – Ex3 StoreController BrowseMethod)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = this.storeDB.Genres.Include("Albums") .Single(g => g.Name == genre); return this.View(genreModel); }
Poznámka:
Pokud chcete naplnit kolekci entity, musíte použít metodu Include k určení, že chcete také načíst alba. Můžete použít .Rozšíření Single() v LINQ, protože v tomto případě se u alba očekává jen jeden žánr. Metoda Single() přebírá výraz Lambda jako parametr, který v tomto případě určuje jeden objekt Žánr, aby jeho název odpovídal hodnotě definované.
Využijete výhod funkce, která vám umožní vyznačit další související entity, které chcete načíst, i při načtení objektu Žánr. Tato funkce se nazývá Formování výsledků dotazu a umožňuje snížit počet potřebných pro přístup k databázi pro načtení informací. V tomto scénáři budete chtít předem načíst alba pro žánr, který načtete.
Dotaz obsahuje Žánry.Include("Alba") a indikuje, že chcete také související alba. Výsledkem bude efektivnější aplikace, protože načte data žánru i alba v požadavku na jednu databázi.
Úkol 2 – spuštění aplikace
V této úloze spustíte aplikaci a načtete alba konkrétního žánru z databáze.
Stisknutím klávesy F5 spusťte aplikaci.
Projekt začíná na domovské stránce. Změňte adresu URL na /Store/Browse?žánr=Pop a ověřte, že se výsledky načítají z databáze.
Procházení /Store/Browse?žánr=Pop
Úkol 3 – Přístup k albům podle ID
V tomto úkolu zopakujete předchozí postup, abyste získali alba podle jejich ID.
V případě potřeby zavřete prohlížeč a vraťte se do sady Visual Studio. Otevřete Třídu StoreController a změňte metodu akce Details. Uděláte to tak, že v Průzkumník řešení rozbalíte složku Kontrolery a poklikejte na StoreController.cs.
Změňte metodu akce Details tak, aby načítala podrobnosti alb na základě jejich ID. Uděláte to tak, že nahradíte následující kód:
(Fragment kódu – Modely a přístup k datům – Ex3 StoreController DetailsMethod)
// GET: /Store/ public ActionResult Details(int id) { var album = this.storeDB.Albums.Find(id); if (album == null) { return this.HttpNotFound(); } return this.View(album); }
Úkol 4 – spuštění aplikace
V této úloze spustíte aplikaci ve webovém prohlížeči a získáte podrobnosti alba podle jejich ID.
Stisknutím klávesy F5 spusťte aplikaci.
Projekt začíná na domovské stránce. Změňte adresu URL na /Store/Details/51 nebo procházejte žánry a vyberte album, abyste ověřili, že se výsledky načítají z databáze.
Procházení /Store/Podrobnosti/51
Poznámka:
Kromě toho můžete tuto aplikaci nasadit na weby Windows Azure podle dodatku B: Publikování aplikace ASP.NET MVC 4 pomocí nasazení webu.
Shrnutí
Dokončením tohoto praktického cvičení jste se seznámili se základy ASP.NET modelů MVC a přístupu k datům, a to s využitím přístupu Database First a také přístupu Code First :
- Postup přidání databáze do řešení za účelem využití dat
- Aktualizace kontrolerů tak, aby poskytovaly šablony zobrazení s daty převzatými z databáze místo pevně zakódované databáze
- Jak dotazovat databázi pomocí parametrů
- Použití formování výsledků dotazu, funkce, která snižuje počet přístupů k databázi a načítání dat efektivnějším způsobem
- Použití přístupů Database First a Code First v rozhraní Microsoft Entity Framework k propojení databáze s modelem
Příloha A: Instalace sady Visual Studio Express 2012 pro web
Microsoft Visual Studio Express 2012 pro web nebo jinou verzi Expressu můžete nainstalovat pomocí instalačního programu Webová platforma Microsoft. Následující pokyny vás provedou postupem potřebným k instalaci sady Visual Studio Express 2012 pro web pomocí instalačního programu Webová platforma Microsoft.
Přejděte na [/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169](/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169). Pokud už máte nainstalovaný instalační program webové platformy, můžete ho také otevřít a vyhledat produkt Visual Studio Express 2012 pro web se sadou Windows Azure SDK.
Klikněte na Nainstalovat. Pokud nemáte instalační program webové platformy, budete přesměrováni na jeho první stažení a instalaci.
Po otevření instalačního programu webové platformy spusťte instalaci kliknutím na nainstalovat .
Instalace sady Visual Studio Express
Přečtěte si všechny licence a podmínky produktů a pokračujte kliknutím na Přijmout .
Přijetí licenčních podmínek
Počkejte, až se proces stahování a instalace dokončí.
Průběh instalace
Po dokončení instalace klepněte na tlačítko Dokončit.
Instalace byla dokončena.
Kliknutím na tlačítko Ukončit zavřete instalační program webové platformy.
Pokud chcete otevřít Visual Studio Express pro web, přejděte na úvodní obrazovku a začněte psát "VS Express" a potom klikněte na dlaždici VS Express pro web.
Dlaždice VS Express pro web
Příloha B: Publikování aplikace ASP.NET MVC 4 pomocí nasazení webu
V tomto dodatku se dozvíte, jak vytvořit nový web z portálu pro správu Windows Azure a publikovat aplikaci, kterou jste získali v testovacím prostředí, a využít tak funkci publikování nasazení webu, kterou poskytuje Windows Azure.
Úkol 1 – Vytvoření nového webu z webu Windows Azure Portal
Přejděte na portál pro správu Windows Azure a přihlaste se pomocí přihlašovacích údajů Microsoftu přidružených k vašemu předplatnému.
Poznámka:
S Windows Azure můžete zdarma hostovat 10 ASP.NET weby a pak škálovat s rostoucím provozem. Tady se můžete zaregistrovat.
Přihlášení k portálu pro správu Windows Azure
Na panelu příkazů klikněte na Nový .
Vytvoření nového webu
Klikněte na výpočetní | web. Pak vyberte možnost Rychlé vytvoření . Zadejte dostupnou adresu URL nového webu a klikněte na vytvořit web.
Poznámka:
Web Windows Azure je hostitelem webové aplikace běžící v cloudu, kterou můžete řídit a spravovat. Možnost Rychlé vytvoření umožňuje nasadit dokončenou webovou aplikaci na web Windows Azure mimo portál. Nezahrnuje kroky pro nastavení databáze.
Vytvoření nového webu pomocí rychlého vytvoření
Počkejte na vytvoření nového webu .
Po vytvoření webu klikněte na odkaz pod sloupcem ADRESY URL . Zkontrolujte, jestli nový web funguje.
Přechod na nový web
Spuštěný web
Vraťte se na portál a kliknutím na název webu ve sloupci Název zobrazte stránky pro správu.
Otevření stránek pro správu webu
Na stránce Řídicí panel v části Rychlý přehled klikněte na odkaz Stáhnout profil publikování.
Poznámka:
Profil publikování obsahuje všechny informace potřebné k publikování webové aplikace na web Windows Azure pro každou povolenou metodu publikování. Profil publikování obsahuje adresy URL, přihlašovací údaje uživatele a databázové řetězce potřebné pro připojení ke každému koncovému bodu, pro který je povolená metoda publikování. Microsoft WebMatrix 2, Microsoft Visual Studio Express pro web a Microsoft Visual Studio 2012 podporují profily publikování pro čtení pro automatizaci konfigurace těchto programů pro publikování webových aplikací na weby Windows Azure.
Stažení profilu publikování webu
Stáhněte soubor profilu publikování do známého umístění. Dále v tomto cvičení se dozvíte, jak pomocí tohoto souboru publikovat webovou aplikaci na weby Windows Azure ze sady Visual Studio.
Uložení souboru profilu publikování
Úloha 2 – Konfigurace databázového serveru
Pokud vaše aplikace využívá databáze SQL Serveru, budete muset vytvořit server služby SQL Database. Pokud chcete nasadit jednoduchou aplikaci, která nepoužívá SQL Server, můžete tuto úlohu přeskočit.
K uložení aplikační databáze budete potřebovat server služby SQL Database. Servery SLUŽBY SQL Database můžete zobrazit z vašeho předplatného na portálu pro správu Windows Azure na řídicím panelu serveru sql Databases | Servers | . Pokud server nemáte vytvořený, můžete ho vytvořit pomocí tlačítka Přidat na panelu příkazů. Poznamenejte si název serveru a adresu URL, přihlašovací jméno a heslo správce, protože je budete používat v dalších úlohách. Databázi ještě nevytvořte, protože bude vytvořena v pozdější fázi.
Řídicí panel serveru SLUŽBY SQL Database
V další úloze otestujete připojení k databázi ze sady Visual Studio, z tohoto důvodu musíte do seznamu povolených IP adres serveru zahrnout svou místní IP adresu. Uděláte to tak, že kliknete na Konfigurovat, vyberete IP adresu z aktuální IP adresy klienta a vložíte ji do textových polí Počáteční IP adresa a Koncová IP adresa a kliknete na
tlačítko.
Přidání IP adresy klienta
Po přidání IP adresy klienta do seznamu povolených IP adres klikněte na Uložit a potvrďte změny.
Potvrdit změny
Úloha 3 – Publikování aplikace ASP.NET MVC 4 pomocí nasazení webu
Vraťte se k řešení ASP.NET MVC 4. V Průzkumník řešení klikněte pravým tlačítkem myši na projekt webu a vyberte Publikovat.
Publikování webu
Importujte profil publikování, který jste uložili v prvním úkolu.
Import profilu publikování
Klikněte na Ověřit připojení. Po dokončení ověření klikněte na tlačítko Další.
Poznámka:
Ověření se dokončí, jakmile se vedle tlačítka Ověřit připojení zobrazí zelené zaškrtnutí.
Ověřování připojení
Na stránce Nastavení klikněte v části Databáze na tlačítko vedle textového pole připojení k databázi (tj. DefaultConnection).
Konfigurace nasazení webu
Připojení k databázi nakonfigurujte následujícím způsobem:
Do pole Název serveru zadejte adresu URL serveru služby SQL Database pomocí předpony tcp:
Do pole Uživatelské jméno zadejte přihlašovací jméno správce serveru.
Do pole Heslo zadejte přihlašovací heslo správce serveru.
Zadejte nový název databáze.
Konfigurace cílového připojovací řetězec
Pak klikněte na OK. Po zobrazení výzvy k vytvoření databáze klepněte na tlačítko Ano.
Vytvoření databáze
Připojovací řetězec, které použijete pro připojení ke službě SQL Database ve Windows Azure, se zobrazí v textovém poli Výchozí připojení. Pak klikněte na tlačítko Další.
Připojovací řetězec odkazující na SLUŽBU SQL Database
Na stránce Náhled klikněte na Publikovat.
Publikování webové aplikace
Po dokončení procesu publikování se ve výchozím prohlížeči otevře publikovaný web.
Příloha C: Použití fragmentů kódu
S fragmenty kódu máte veškerý kód, který potřebujete na dosah ruky. Dokument testovacího prostředí vám přesně řekne, kdy je můžete použít, jak je znázorněno na následujícím obrázku.
Použití fragmentů kódu sady Visual Studio k vložení kódu do projektu
Přidání fragmentu kódu pomocí klávesnice (jenom C#)
- Umístěte kurzor na místo, kam chcete vložit kód.
- Začněte psát název fragmentu kódu (bez mezer nebo pomlček).
- Sledujte, jak IntelliSense zobrazuje odpovídající názvy fragmentů kódu.
- Vyberte správný fragment kódu (nebo pokračujte v psaní, dokud nebude vybrán název celého fragmentu kódu).
- Dvojím stisknutím klávesy Tab vložte fragment kódu do umístění kurzoru.
Začněte psát název fragmentu kódu.
Stisknutím klávesy Tab vyberte zvýrazněný fragment kódu.
Znovu stiskněte klávesu Tab a fragment kódu se rozbalí.
Pokud chcete přidat fragment kódu pomocí myši (C#, Visual Basic a XML) 1. Klikněte pravým tlačítkem na místo, kam chcete vložit fragment kódu.
- Vyberte Vložit fragment kódu následovaný mými fragmenty kódu.
- Kliknutím na něj vyberte příslušný fragment kódu ze seznamu.
Klikněte pravým tlačítkem na místo, kam chcete vložit fragment kódu, a vyberte Vložit fragment kódu.
Výběr relevantního fragmentu ze seznamu kliknutím na něj