Programiranje

Kako uporabljati pripise podatkov v jeziku C #

Pripisi podatkov (na voljo kot del imenskega prostora System. ComponentModel. DataAnnotations) so atributi, ki jih je mogoče uporabiti za razrede ali člane razreda, da se določi razmerje med razredi, opiše, kako naj bodo podatki prikazani v uporabniškem vmesniku, in določi pravila potrjevanja. Ta članek govori o pripisih podatkov, zakaj so uporabni in kako jih uporabiti v naših aplikacijah .NET Core.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt aplikacije za konzolo v Visual Studio 2019

Najprej ustvarimo projekt aplikacije .NET Core Console v Visual Studio. Če predpostavimo, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da v Visual Studio ustvarite nov aplikacijski projekt .NET Core Console.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na seznamu predlog izberite »Console App (.NET Core)«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.

Tako boste ustvarili nov aplikacijski projekt konzole .NET Core v Visual Studio 2019. Ta projekt bomo uporabili za delo s pripisi podatkov v naslednjih razdelkih tega članka.

Vključite sistem. ComponentModel. Imenski prostor DataAnnotations

Če želite delati z vzorci kod v tem članku, vključite sistem. ComponentModel. Imenski prostor DataAnnotations v vašem programu.

Upoštevajte, da se atributi uporabljajo za podajanje metapodatkov o razredu ali lastnosti. Atribute pripisov podatkov lahko na splošno razvrstimo v naslednje:

  • Atribut preverjanja - Uporablja se za uveljavitev pravil preverjanja veljavnosti lastnosti entitet
  • Atribut zaslona - Uporablja se za določanje načina prikaza podatkov v uporabniškem vmesniku
  • Atribut modeliranja - Uporablja se za določanje razmerja med razredi

Razredi atributov pripisov podatkov v jeziku C #

Imenski prostor System.ComponentModel.Annotations vsebuje več razredov atributov, ki jih je mogoče uporabiti za določanje metapodatkov za razrede entitet ali kontrolnike podatkov. Najpogosteje uporabljeni atributi vključujejo naslednje:

  • ConcurrencyCheck
  • Ključ
  • MaxLength
  • Obvezno
  • StringLength
  • Časovni žig

Primer pripisov podatkov v jeziku C #

Ustvarite naslednji razred v datoteki z imenom Author.cs v konzoli, ki smo jo ustvarili prej.

javni razred Avtor

    {

[Obvezno (ErrorMessage = "{0} je obvezno")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Ime mora imeti najmanj 3 znake in največ 50 znakov")]

[DataType (DataType.Text)]

javni niz FirstName {get; set; }

[Obvezno (ErrorMessage = "{0} je obvezno")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Priimek mora imeti najmanj 3 znake in največ 50 znakov")]

[DataType (DataType.Text)]

javni niz LastName {get; set; }

[DataType (DataType.PhoneNumber)]

[Telefon]

javni niz PhoneNumber {get; set; }

[DataType (DataType.EmailAddress)]

[Email naslov]

javni niz Email {get; set; }

    }

Naslednji delček kode prikazuje, kako lahko ustvarite primerek razreda Author in njegovim lastnostim dodelite vrednosti.

Avtor avtor = nov avtor ();

author.FirstName = "Joydip";

author.LastName = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Za potrditev modela lahko v glavno metodo datoteke Program.cs napišete naslednji delček kode.

ValidationContext context = novo ValidationContext (avtor, nič, nič);

Seznam validationResults = nov seznam ();

bool veljavno = Validator.TryValidateObject (avtor, kontekst, validacijski rezultati, resnično);

če (! veljavno)

{

foreach (ValidationResult validationResult in validationResults)

  {

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

  }

}

ValidationContext je razred, ki vam daje kontekst, v katerem naj se opravi preverjanje veljavnosti. Statična metoda TryValidateObject razreda Validator vrne true, če je preverjanje uspešno, sicer false. Vrne tudi seznam ValidationResults, ki podrobno opisuje vsa preverjanja, ki niso uspela na modelu. Na koncu smo z zanko foreach ponovili seznam ValidationResults in prikazali sporočila o napakah v oknu konzole.

Popoln seznam kod je spodaj naveden za referenco.

javni razred Avtor

    {

[Obvezno (ErrorMessage = "{0} je obvezno")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Ime mora imeti najmanj 3 znake in največ 50 znakov")]

[DataType (DataType.Text)]

javni niz FirstName {get; set; }

[Obvezno (ErrorMessage = "{0} je obvezno")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Priimek mora imeti najmanj 3 znake in največ 50 znakov")]

[DataType (DataType.Text)]

javni niz LastName {get; set; }

[DataType (DataType.PhoneNumber)]

[Telefon]

javni niz PhoneNumber {get; set; }

[DataType (DataType.EmailAddress)]

[Email naslov]

javni niz Email {get; set; }

    }

razredni program

    {      

statična praznina Main (string [] args)

        {

Avtor avtor = nov avtor ();

author.FirstName = "Joydip";

author.LastName = ""; // Vnesena ni nobena vrednost

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = novo ValidationContext

(avtor, nič, nič);

Seznam validacijskih rezultatov = novo

Seznam ();

bool veljavno = Validator.TryValidateObject

(avtor, kontekst, validacijski rezultati, resnično);

če (! veljavno)

            {

foreach (ValidationResult validacijski rezultat v

validationResults)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Ko zaženete program, se v oknu konzole prikaže naslednje sporočilo o napaki:

Priimek je obvezen

Ustvarite atribut preverjanja po meri v jeziku C #

Če želite ustvariti razred atributov preverjanja po meri, morate razširiti osnovni razred ValidationAttribute in preglasiti metodo IsValid, kot je prikazano v spodnjem delčku kode.

[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Podedovano = false)]

javni razred IsEmptyAttribute: ValidationAttribute

 {

public override bool IsValid (vrednost predmeta)

     {

var inputValue = vrednost kot niz;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Naslednji delček kode ponazarja, kako lahko atribut po meri uporabite za okrasitev lastnosti FirstName in LastName razreda Author.

[IsEmpty (ErrorMessage = "Ne sme biti nič ali prazno.")]

javni niz FirstName {get; set; }

[IsEmpty (ErrorMessage = "Ne sme biti nič ali prazno.")]

javni niz LastName {get; set; }

Pripisi podatkov so bili prvotno uvedeni v .NET 3.5 kot del sistema. ComponentModel. Imenski prostor DataAnnotations. Od takrat so postali pogosto uporabljena funkcija v .NET-u. Pripise podatkov lahko izkoristite za določanje pravil za preverjanje veljavnosti podatkov na enem mestu in se tako izognete ponovnemu pisanju iste kode za preverjanje.

V prihodnjem prispevku si bomo ogledali, kako lahko pripise podatkov uporabimo v aplikacijah ASP.NET Core MVC za preverjanje modelov.

Kako narediti več v jeziku C #

  • Kdaj uporabiti abstraktni razred v primerjavi z vmesnikom v jeziku C #
  • Kako delati z AutoMapper v C #
  • Kako uporabljati lambda izraze v jeziku C #
  • Kako delati z delegati Action, Func in Predicate v C #
  • Kako delati z delegati v C #
  • Kako implementirati preprost zapisovalnik v jeziku C #
  • Kako delati z atributi v jeziku C #
  • Kako delati z log4net v C #
  • Kako implementirati vzorec oblikovanja repozitorija v C #
  • Kako delati z refleksijo v jeziku C #
  • Kako delati z nadzornikom datotek v C #
  • Kako izvesti leno inicializacijo v C #
  • Kako delati z MSMQ v C #
  • Kako delati z razširitvenimi metodami v jeziku C #
  • Kako do lambda izrazov v jeziku C #
  • Kdaj uporabiti hlapljivo ključno besedo v jeziku C #
  • Kako uporabiti ključno besedo yield v jeziku C #
  • Kako uporabiti polimorfizem v jeziku C #
  • Kako zgraditi lasten načrtovalnik opravil v C #
  • Kako delati z RabbitMQ v C #
  • Kako delati s korpico v jeziku C #
  • Raziskovanje virtualnih in abstraktnih metod v jeziku C #
$config[zx-auto] not found$config[zx-overlay] not found