Kako koristiti bilješke podataka u C #

Anotacije podataka (dostupne kao dio sustava imena System. ComponentModel. DataAnnotations) atributi su koji se mogu primijeniti na klase ili članove klase kako bi se odredio odnos između klasa, opisao način prikazivanja podataka u korisničkom sučelju i odredila pravila provjere valjanosti. Ovaj članak govori o bilješkama podataka, zašto su korisne i kako ih koristiti u našim .NET Core aplikacijama.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

Stvorite projekt aplikacije konzole u Visual Studio 2019

Prvo stvorimo projekt .NET Core Console Application u Visual Studiju. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste stvorili novi projekt aplikacije .NET Core Console u Visual Studio-u.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "Aplikacija konzole (.NET Core)".
  4. Kliknite Dalje. 
  5. U sljedećem prozoru "Konfiguriranje novog projekta" navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.

To će stvoriti novi projekt aplikacije .NET Core konzole u Visual Studio 2019. Ovaj ćemo projekt koristiti za rad s bilješkama podataka u sljedećim odjeljcima ovog članka.

Uključite sustav. KomponentaModel. Prostor imena DataAnnotations

Da biste radili s uzorcima koda danim u ovom članku, trebali biste uključiti sustav. KomponentaModel. Prostor imena DataAnnotations u vašem programu.

Imajte na umu da se atributi koriste za specificiranje metapodataka o klasi ili svojstvu. Atributi bilješki podataka mogu se široko klasificirati u sljedeće:

  • Atribut provjere valjanosti - koristi se za provođenje pravila provjere valjanosti svojstava entiteta
  • Atribut prikaza - Koristi se za određivanje načina na koji se podaci trebaju prikazivati ​​u korisničkom sučelju
  • Atribut modeliranja - Koristi se za određivanje odnosa koji postoji između klasa

Klase atributa anotacija podataka u C #

Prostor imena System.ComponentModel.Annotations sadrži nekoliko klasa atributa koji se mogu koristiti za definiranje metapodataka za klase entiteta ili kontrole podataka. Najčešće korišteni atributi uključuju sljedeće:

  • Provjera paralelnosti
  • Ključ
  • Maksimalna dužina
  • Potreban
  • Dužina niza
  • Vremenska oznaka

Primjer bilješki podataka u C #

Stvorite sljedeću klasu u datoteci koja se zove Author.cs u aplikaciji konzole koju smo ranije kreirali.

javni razred Autor

    {

        [Obavezno (ErrorMessage = "potreban je {0}")]

        [StringLength (50, MinimalnaLength = 3,

        ErrorMessage = "Ime mora sadržavati najmanje 3 znaka i najviše 50 znakova")]

        [Tip podataka (tip podataka.Tekst)]

        javni niz FirstName {get; postavljen; }

        [Obavezno (ErrorMessage = "potreban je {0}")]

        [StringLength (50, MinimalnaLength = 3,

        ErrorMessage = "Prezime mora sadržavati najmanje 3 znaka i najviše 50 znakova")]

        [Tip podataka (tip podataka.Tekst)]

        javni niz LastName {get; postavljen; }

        [Vrsta podatka (Tip podataka.broj telefona)]

        [Telefon]

        javni niz PhoneNumber {get; postavljen; }

        [Tip podataka (DataType.EmailAddress)]

        [Email adresa]

        javni niz e-pošte {get; postavljen; }

    }

Sljedeći isječak koda ilustrira kako možete stvoriti instancu klase Author i dodijeliti vrijednosti njezinim svojstvima.

Autor autora = novi autor ();

author.FirstName = "Joydip";

author.LastName = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Sljedeći isječak koda možete napisati u Glavnoj metodi datoteke Program.cs kako biste provjerili svoj model.

ValidationContext context = new ValidationContext (autor, null, null);

Popis validationResults = novi List ();

bool vrijedi = Validator.TryValidateObject (autor, kontekst, validationResults, true);

ako (! valjano)

{

  foreach (ValidationResult validationResult u validationResults)

  {

       Console.WriteLine ("{0}", validationResult.ErrorMessage);

  }

}

ValidationContext je klasa koja vam pruža kontekst u kojem treba izvršiti provjeru valjanosti. Statička metoda TryValidateObject klase Validator vraća true ako je provjera valjanosti uspješna, inače false. Također vraća popis ValidationResults koji detaljizira sve provjere valjanosti koje nisu uspjele na modelu. Konačno, koristili smo petlju foreach za ponavljanje popisa ValidationResults i prikazivanje poruka o pogreškama na prozoru konzole.

Kompletni popis kodova dat je u nastavku za vašu referencu.

javni razred Autor

    {

        [Obavezno (ErrorMessage = "potreban je {0}")]

        [StringLength (50, MinimalnaLength = 3,

        ErrorMessage = "Ime mora sadržavati najmanje 3 znaka i najviše 50 znakova")]

        [Tip podataka (tip podataka.Tekst)]

        javni niz FirstName {get; postavljen; }

        [Obavezno (ErrorMessage = "potreban je {0}")]

        [StringLength (50, MinimalnaLength = 3,

        ErrorMessage = "Prezime mora sadržavati najmanje 3 znaka i najviše 50 znakova")]

        [Tip podataka (tip podataka.Tekst)]

        javni niz LastName {get; postavljen; }

        [Vrsta podatka (Tip podataka.broj telefona)]

        [Telefon]

        javni niz PhoneNumber {get; postavljen; }

        [Tip podataka (DataType.EmailAddress)]

        [Email adresa]

        javni niz e-pošte {get; postavljen; }

    }

    razredni program

    {      

        statička praznina Main (string [] args)

        {

            Autor autora = novi autor ();

            author.FirstName = "Joydip";

            author.LastName = ""; // Nije unesena vrijednost

            author.PhoneNumber = "1234567890";

            author.Email = "[email protected]";

            ValidationContext context = novi ValidationContext

            (autor, ništavno, ništavno);

            Popis validationResults = novo

            Popis();

            bool vrijedi = Validator.TryValidateObject

            (autor, kontekst, validacijski rezultati, istina);

            ako (! valjano)

            {

                Windows Vista foreach (ValidationResult validationResult in

                validacijaRezultati)

                {

                    Console.WriteLine ("{0}",

                    validationResult.ErrorMessage);

                }

            }

            Console.ReadKey ();

        }

    }

Kada izvršite program, trebali biste vidjeti sljedeću poruku o pogrešci koja se prikazuje na prozoru konzole:

Potrebno je Prezime

Stvorite prilagođeni atribut provjere na C #

Da biste stvorili prilagođenu klasu atributa za provjeru valjanosti, trebali biste proširiti osnovnu klasu ValidationAttribute i nadjačati metodu IsValid kako je prikazano u isječku koda koji je dan u nastavku.

[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Naslijeđeno = false)]

javna klasa IsEmptyAttribute: ValidationAttribute

 {

    public override bool IsValid (vrijednost objekta)

     {

         var inputValue = vrijednost kao niz;

         return! string.IsNullOrEmpty (inputValue);

     }

 }

Sljedeći isječak koda ilustrira kako možete koristiti prilagođeni atribut za ukrašavanje svojstava FirstName i LastName klase Author.

[IsEmpty (ErrorMessage = "Ne smije biti null ili prazno.")]

javni niz FirstName {get; postavljen; }

[IsEmpty (ErrorMessage = "Ne smije biti null ili prazno.")]

javni niz LastName {get; postavljen; }

Bilješke o podacima uvedene su u početku u .NET 3.5 kao dio sustava. KomponentaModel. Prostor imena DataAnnotations. Od tada su postali široko korištena značajka u .NET-u. Bilješke podataka možete iskoristiti za definiranje pravila provjere valjanosti podataka na jednom mjestu i na taj način izbjegavati ponovno pisanje istog koda za provjeru valjanosti.

U sljedećem postu ovdje ćemo pogledati kako se anotacija podataka može koristiti u ASP.NET Core MVC aplikacijama za provjeru valjanosti modela.

Kako učiniti više u C #

  • Kada koristiti apstraktnu klasu naspram sučelja u C #
  • Kako raditi s AutoMapperom u C #
  • Kako koristiti lambda izraze u C #
  • Kako raditi s delegatima Action, Func i Predicate u C #
  • Kako raditi s delegatima u C #
  • Kako implementirati jednostavni zapisnik u C #
  • Kako raditi s atributima u C #
  • Kako raditi s log4netom na C #
  • Kako implementirati obrazac dizajna spremišta u C #
  • Kako raditi s refleksijom u C #
  • Kako raditi s nadzornikom datoteka u C #
  • Kako izvesti lijenu inicijalizaciju u C #
  • Kako raditi s MSMQ-om u C #
  • Kako raditi s metodama produženja u C #
  • Kako do nas lambda izrazi u C #
  • Kada upotrijebiti hlapljivu ključnu riječ u C #
  • Kako koristiti ključnu riječ yield u C #
  • Kako implementirati polimorfizam u C #
  • Kako izraditi vlastiti planer zadataka u C #
  • Kako raditi s RabbitMQ u C #
  • Kako raditi s korpicom u C #
  • Istraživanje virtualnih i apstraktnih metoda u C #