Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí MVC, Entity Frameworku a ASP.NET generování můžete vytvořit webovou aplikaci, která poskytuje rozhraní pro existující databázi. V této sérii kurzů se dozvíte, jak automaticky vygenerovat kód, který uživatelům umožní zobrazovat, upravovat, vytvářet a odstraňovat data uložená v databázové tabulce. Vygenerovaný kód odpovídá sloupcům v tabulce databáze.
Tento kurz se zaměřuje na přidání datových poznámek do datového modelu, které určují požadavky na ověření a formátování zobrazení. Vylepšili jsme ho na základě zpětné vazby od uživatelů v části komentáře.
V tomto kurzu jste:
- Přidání datových poznámek
- Přidání tříd metadat
Požadavky
Přidání datových poznámek
Jak jste viděli v předchozím tématu, některá pravidla ověření dat se automaticky použijí na uživatelský vstup. Pro vlastnost Grade můžete například zadat jenom číslo. Pokud chcete zadat více pravidel ověření dat, můžete do třídy modelu přidat datové poznámky. Tyto poznámky se použijí v celé webové aplikaci pro zadanou vlastnost. Můžete také použít atributy formátování, které mění způsob zobrazení vlastností; například změna hodnoty použité pro textové popisky.
V tomto kurzu přidáte datové poznámky, abyste omezili délku hodnot zadaných pro vlastnosti FirstName, LastName a MiddleName. V databázi jsou tyto hodnoty omezeny na 50 znaků; ve webové aplikaci se však tento limit znaků v současné době nevynucuje. Pokud uživatel zadá více než 50 znaků pro jednu z těchto hodnot, stránka se při pokusu o uložení hodnoty do databáze chybově ukončí. Hodnocení také omezíte na hodnoty mezi 0 a 4.
ContosoModel.tt vyberte Models>ContosoModel.edmx> a otevřete soubor Student.cs. Do třídy přidejte následující zvýrazněný kód.
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Student
{
public Student()
{
this.Enrollments = new HashSet<Enrollment>();
}
public int StudentID { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
public Nullable<System.DateTime> EnrollmentDate { get; set; }
[StringLength(50)]
public string MiddleName { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
Otevřete soubor Enrollment.cs a přidejte následující zvýrazněný kód.
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Enrollment
{
public int EnrollmentID { get; set; }
[Range(0, 4)]
public Nullable<decimal> Grade { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
}
Sestavte řešení.
Klikněte na Seznam studentů a vyberte Upravit. Pokud se pokusíte zadat více než 50 znaků, zobrazí se chybová zpráva.
Zpět na domovskou stránku. Klikněte na Seznam registrací a vyberte Upravit. Pokus o zadání stupně nad 4. Zobrazí se tato chyba: Pole Známky musí být mezi 0 a 4.
Přidání tříd metadat
Přidání ověřovacích atributů přímo do třídy modelu funguje, pokud neočekáváte změnu databáze; Pokud se však vaše databáze změní a potřebujete znovu vygenerovat třídu modelu, ztratíte všechny atributy, které jste na třídu modelu použili. Tento přístup může být velmi neefektivní a náchylný ke ztrátě důležitých ověřovacích pravidel.
Chcete-li se vyhnout tomuto problému, můžete přidat třídu metadat, která obsahuje atributy. Když přidružíte třídu modelu k třídě metadat, použijí se tyto atributy na model. Při tomto přístupu lze třídu modelu znovu vygenerovat, aniž by došlo ke ztrátě všech atributů, které byly použity na třídu metadat.
Do složky Models přidejte třídu s názvem Metadata.cs.
Nahraďte kód v souboru Metadata.cs následujícím kódem.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
public class StudentMetadata
{
[StringLength(50)]
[Display(Name="Last Name")]
public string LastName;
[StringLength(50)]
[Display(Name="First Name")]
public string FirstName;
[StringLength(50)]
[Display(Name="Middle Name")]
public string MiddleName;
[Display(Name = "Enrollment Date")]
public Nullable<System.DateTime> EnrollmentDate;
}
public class EnrollmentMetadata
{
[Range(0, 4)]
public Nullable<decimal> Grade;
}
}
Tyto třídy metadat obsahují všechny atributy ověřování, které jste dříve použili na třídy modelu. Atribut Display se používá ke změně hodnoty používané pro textové popisky.
Teď musíte přidružit třídy modelu k třídám metadat.
Do složky Models přidejte třídu s názvem PartialClasses.cs.
Obsah souboru nahraďte následujícím kódem.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
}
[MetadataType(typeof(EnrollmentMetadata))]
public partial class Enrollment
{
}
}
Všimněte si, že každá třída je označená partial jako třída a každá odpovídá názvu a oboru názvů jako automaticky generované třídě. Použitím atributu metadat na částečnou třídu zajistíte, že se atributy ověření dat použijí na automaticky vygenerovanou třídu. Tyto atributy nebudou při opětovném vygenerování tříd modelu ztraceny, protože atribut metadat je použit v částečných třídách, které nejsou znovu vygenerovány.
Pokud chcete znovu vygenerovat automaticky generované třídy, otevřete soubor ContosoModel.edmx . Znovu klikněte pravým tlačítkem na návrhovou plochu a vyberte Aktualizovat model z databáze. I když jste databázi nezměnili, tento proces znovu vygeneruje třídy. Na kartě Aktualizovat vyberte Tabulky a Dokončit.
Uložte soubor ContosoModel.edmx , aby se změny použily.
Otevřete soubor Student.cs nebo Enrollment.cs a všimněte si, že atributy ověření dat, které jste použili dříve, už v souboru nejsou. Aplikaci však spusťte a všimněte si, že ověřovací pravidla se při zadávání dat stále použijí.
Závěr
Tato série poskytla jednoduchý příklad generování kódu z existující databáze, který uživatelům umožňuje upravovat, aktualizovat, vytvářet a odstraňovat data. K vytvoření projektu použila ASP.NET MVC 5, Entity Framework a ASP.NET Generování uživatelského rozhraní.
Úvodní příklad vývoje Code First najdete v tématu Začínáme s ASP.NET MVC 5.
Pokročilejší příklad najdete v tématu Vytvoření datového modelu Entity Framework pro aplikaci ASP.NET MVC 4. Všimněte si, že rozhraní DBContext API, které používáte pro práci s daty ve službě Database First, je stejné jako rozhraní API, které používáte pro práci s daty v Code First. I když máte v úmyslu použít Database First, můžete se v kurzu Code First naučit, jak řešit složitější scénáře, jako je čtení a aktualizace souvisejících dat, zpracování konfliktů souběžnosti atd. Jediným rozdílem je způsob vytváření databáze, třídy kontextu a tříd entit.
Další materiály
Úplný seznam poznámek k ověření dat, které můžete použít u vlastností a tříd, najdete v tématu System.ComponentModel.DataAnnotations.
Další kroky
V tomto kurzu jste:
- Přidání datových poznámek
- Přidání tříd metadat
Informace o nasazení webové aplikace a databáze SQL do Azure App Service najdete v tomto kurzu: