Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Za pomocą szkieletu MVC, Entity Framework i ASP.NET można utworzyć aplikację internetową, która udostępnia interfejs istniejącej bazy danych. W tej serii samouczków pokazano, jak automatycznie generować kod, który umożliwia użytkownikom wyświetlanie, edytowanie, tworzenie i usuwanie danych znajdujących się w tabeli bazy danych. Wygenerowany kod odpowiada kolumnom w tabeli bazy danych.
Ten samouczek koncentruje się na dodawaniu adnotacji danych do modelu danych w celu określenia wymagań dotyczących walidacji i wyświetlania formatowania. Ulepszono ją na podstawie opinii użytkowników w sekcji komentarzy.
W tym samouczku zostały wykonane następujące czynności:
- Dodawanie adnotacji danych
- Dodawanie klas metadanych
Wymagania wstępne
Dodawanie adnotacji danych
Jak pokazano w poprzednim temacie, niektóre reguły sprawdzania poprawności danych są automatycznie stosowane do danych wejściowych użytkownika. Na przykład można podać tylko liczbę dla właściwości Grade. Aby określić więcej reguł weryfikacji danych, możesz dodać adnotacje danych do klasy modelu. Te adnotacje są stosowane w całej aplikacji internetowej dla określonej właściwości. Można również zastosować atrybuty formatowania, które zmieniają sposób wyświetlania właściwości; na przykład zmiana wartości używanej dla etykiet tekstowych.
W tym samouczku dodasz adnotacje danych, aby ograniczyć długość wartości podanych dla właściwości FirstName, LastName i MiddleName. W bazie danych te wartości są ograniczone do 50 znaków; jednak w aplikacji internetowej limit znaków nie jest obecnie wymuszany. Jeśli użytkownik zawiera więcej niż 50 znaków dla jednej z tych wartości, strona ulegnie awarii podczas próby zapisania wartości w bazie danych. Ograniczysz również ocenę do wartości z zakresu od 0 do 4.
Wybierz pozycję Modele>ContosoModel.edmx>ContosoModel.tt i otwórz plik Student.cs . Dodaj następujący wyróżniony kod do klasy.
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; }
}
}
Otwórz plik Enrollment.cs i dodaj następujący wyróżniony kod.
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; }
}
}
Skompiluj rozwiązanie.
Kliknij pozycję Lista uczniów i wybierz pozycję Edytuj. Jeśli próbujesz wprowadzić więcej niż 50 znaków, zostanie wyświetlony komunikat o błędzie.
Wstecz do strony głównej. Kliknij pozycję Lista rejestracji i wybierz pozycję Edytuj. Próba podania klasy powyżej 4. Zostanie wyświetlony następujący błąd: Klasa pola musi należeć do zakresu od 0 do 4.
Dodawanie klas metadanych
Dodanie atrybutów weryfikacji bezpośrednio do klasy modelu działa, gdy nie oczekujesz, że baza danych ulegnie zmianie; jeśli jednak baza danych ulegnie zmianie i musisz ponownie wygenerować klasę modelu, utracisz wszystkie atrybuty zastosowane do klasy modelu. Takie podejście może być bardzo nieefektywne i podatne na utratę ważnych reguł walidacji.
Aby uniknąć tego problemu, możesz dodać klasę metadanych zawierającą atrybuty. Po skojarzeniu klasy modelu z klasą metadanych te atrybuty są stosowane do modelu. W tym podejściu można ponownie wygenerować klasę modelu bez utraty wszystkich atrybutów, które zostały zastosowane do klasy metadanych.
W folderze Models dodaj klasę o nazwie Metadata.cs.
Zastąp kod w pliku Metadata.cs następującym kodem.
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;
}
}
Te klasy metadanych zawierają wszystkie atrybuty weryfikacji, które zostały wcześniej zastosowane do klas modelu. Atrybut Wyświetlania służy do zmiany wartości używanej dla etykiet tekstowych.
Teraz należy skojarzyć klasy modelu z klasami metadanych.
W folderze Models dodaj klasę o nazwie PartialClasses.cs.
Zastąp zawartość pliku następującym kodem.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
}
[MetadataType(typeof(EnrollmentMetadata))]
public partial class Enrollment
{
}
}
Zwróć uwagę, że każda klasa jest oznaczona jako klasa, a każda z nich jest zgodna z nazwą i przestrzenią nazw jako klasą partial , która jest generowana automatycznie. Stosując atrybut metadanych do klasy częściowej, upewnij się, że atrybuty weryfikacji danych zostaną zastosowane do automatycznie wygenerowanej klasy. Te atrybuty nie zostaną utracone podczas ponownego generowania klas modelu, ponieważ atrybut metadanych jest stosowany w klasach częściowych, które nie są ponownie generowane.
Aby ponownie wygenerować automatycznie wygenerowane klasy, otwórz plik ContosoModel.edmx . Po raz kolejny kliknij prawym przyciskiem myszy powierzchnię projektową i wybierz pozycję Aktualizuj model z bazy danych. Mimo że baza danych nie została zmieniona, ten proces ponownie wygeneruje klasy. Na karcie Odświeżanie wybierz pozycję Tabele i Zakończ.
Zapisz plik ContosoModel.edmx , aby zastosować zmiany.
Otwórz plik Student.cs lub plik Enrollment.cs i zwróć uwagę, że zastosowane wcześniej atrybuty weryfikacji danych nie znajdują się już w pliku. Należy jednak uruchomić aplikację i zauważyć, że reguły weryfikacji są nadal stosowane podczas wprowadzania danych.
Podsumowanie
W tej serii przedstawiono prosty przykład generowania kodu z istniejącej bazy danych, która umożliwia użytkownikom edytowanie, aktualizowanie, tworzenie i usuwanie danych. Do utworzenia projektu użyto ASP.NET MVC 5, Entity Framework i ASP.NET szkieletu.
Aby zapoznać się z wprowadzającym przykładem programowania code first, zobacz Wprowadzenie z ASP.NET MVC 5.
Aby uzyskać bardziej zaawansowany przykład, zobacz Tworzenie modelu danych platformy Entity Framework dla ASP.NET aplikacji MVC 4. Należy pamiętać, że interfejs API DbContext używany do pracy z danymi w usłudze Database First jest taki sam jak interfejs API używany do pracy z danymi w kodzie First. Nawet jeśli zamierzasz używać usługi Database First, możesz dowiedzieć się, jak obsługiwać bardziej złożone scenariusze, takie jak odczytywanie i aktualizowanie powiązanych danych, obsługa konfliktów współbieżności itd. z samouczka Code First. Jedyną różnicą jest sposób tworzenia baz danych, klasy kontekstu i klas jednostek.
Dodatkowe zasoby
Aby uzyskać pełną listę adnotacji weryfikacji danych, które można zastosować do właściwości i klas, zobacz System.ComponentModel.DataAnnotations.
Następne kroki
W tym samouczku zostały wykonane następujące czynności:
- Dodano adnotacje danych
- Dodano klasy metadanych
Aby dowiedzieć się, jak wdrożyć aplikację internetową i bazę danych SQL w Azure App Service, zobacz ten samouczek: