C# 'da veri ek açıklamaları nasıl kullanılır?

2 ay önce , Okuma süresi 4 dakika.

Bu yayında uygulamanızın veri tanımının tek bir yerden yönetilebilmesi için özellik etiketlerini kullanarak modellerinizi süslemek için veri ek açıklamalarından yararlanmayı anlatacağız.

Veri ek açıklamaları (System. ComponentModel. DataAnnotations ad alanının bir parçası olarak bulunur) sınıflar veya sınıf üyelerine sınıflar arasındaki ilişkiyi belirlemek, verilerin kullanıcı arayüzünde nasıl görüntüleneceğini tanımlamak ve doğrulama kurallarını belirlemek için kullanılabilen niteliklerdir. Bu makalede veri ek açıklamaları, neden yararlı oldukları ve bunların .NET Core uygulamalarımızda nasıl kullanılacağı anlatılmaktadır.

Bu makalede sağlanan kod örnekleriyle çalışmak için, sisteminizde Visual Studio 2019 yüklü olmalıdır. Henüz bir kopyanız yoksa, Visual Studio 2019'u buradan indirebilirsiniz

Visual Studio 2019'da bir konsol uygulama projesi oluşturma

Öncelikle, Visual Studio'da bir .NET Core Console Application projesi oluşturalım. Visual Studio 2019'un sisteminizde yüklü olduğu varsayılarak, Visual Studio'da yeni bir .NET Core Konsol Uygulaması projesi oluşturmak için aşağıdaki adımları izleyin.

  • Visual Studio IDE'yi başlatın.
  • "Yeni proje oluştur" u tıklayın.
  • “Yeni proje oluştur” penceresinde, görüntülenen şablonlar listesinden “Konsol Uygulaması (.NET Core)” seçeneğini seçin.
  • Sonrakine tıkla. 
  • Daha sonra gösterilen “Yeni projenizi yapılandırın” penceresinde yeni projenin adını ve yerini belirtin.
  • Oluştur'u tıklayın.

Bu, Visual Studio 2019'da yeni bir .NET Core konsolu uygulama projesi oluşturacaktır. Bu projeyi, bu makalenin sonraki bölümlerindeki veri ek açıklamalarıyla çalışmak için kullanacağız.

Sistemi ekleyin. ComponentModel. DataAnnotations ad alanı

Bu makalede verilen kod örnekleri ile çalışmak için sistemi eklemeniz gerekir. ComponentModel. Programınızdaki DataAnnotations ad alanı.

Niteliklerin bir sınıf veya özellik üzerindeki meta verileri belirtmek için kullanıldığını unutmayın. Veri ek açıklama özellikleri genel olarak aşağıdakilere sınıflandırılabilir:

  • Doğrulama özelliği - Varlıkların özellikleri üzerinde doğrulama kuralları uygulamak için kullanılır
  • Display niteliği - Verilerin kullanıcı arayüzünde nasıl görüntülenmesi gerektiğini belirtmek için kullanılır
  • Modelleme özelliği - Sınıflar arasında var olan ilişkiyi belirtmek için kullanılır.

Veri ek açıklamaları C# sınıflarını ilişkilendirir

System.ComponentModel.Annotations ad alanı, varlık sınıflarınız veya veri denetimleriniz için meta verileri tanımlamak için kullanılabilecek birkaç öznitelik sınıfı içerir. En yaygın kullanılan özellikler aşağıdakileri içerir :

  • ConcurrencyCheck
  • Key
  • MaxLength
  • Required
  • StringLength
  • Timestamp

C # 'daki veri ek açıklamaları örneği:

Daha önce oluşturduğumuz konsol uygulamasında Author.cs adlı bir dosyada aşağıdaki sınıfı oluşturun.

public class Author
    {
        [Required(ErrorMessage = "{0} is required")]
        [StringLength(50, MinimumLength = 3,
        ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]
        [DataType(DataType.Text)]
        public string FirstName { get; set; }
        [Required(ErrorMessage = "{0} is required")]
        [StringLength(50, MinimumLength = 3,
        ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]
        [DataType(DataType.Text)]
        public string LastName { get; set; }
        [DataType(DataType.PhoneNumber)]
        [Phone]
        public string PhoneNumber { get; set; }
        [DataType(DataType.EmailAddress)]
        [EmailAddress]
        public string Email { get; set; }
    }

Aşağıdaki kod snippet'i, Author sınıfının bir örneğini nasıl oluşturabileceğinizi ve özelliklerine nasıl değer atayabileceğinizi gösterir.

Author author = new Author();
author.FirstName = "Joydip";
author.LastName = "";
author.PhoneNumber = "1234567890";
author.Email = "[email protected]";

Aşağıdaki kod snippet'ini, modelinizi doğrulamak için Program.cs dosyasının Main yöntemine yazabilirsiniz.

ValidationContext context = new ValidationContext(author, null, null);
List validationResults = new List();
bool valid = Validator.TryValidateObject(author, context, validationResults, true);
if (!valid)
{
  foreach (ValidationResult validationResult in validationResults)
  {
       Console.WriteLine("{0}", validationResult.ErrorMessage);
  }
}

ValidationContext, doğrulamanın yapılması gereken bağlamı sağlayan sınıftır. Doğrulama başarılı olursa, Validator sınıfının TryValidateObject statik yöntemi true değerini, aksi halde false değerini döndürür. Ayrıca, modelde başarısız olan tüm doğrulamaların ayrıntılarını veren bir ValidationResults listesi döndürür. Son olarak, ValidationResults listesini yinelemek ve hata mesajlarını konsol penceresinde görüntülemek için bir foreach döngüsü kullandık.

Tüm kod listesi referans olarak aşağıda verilmiştir.

public class Author
    {
        [Required(ErrorMessage = "{0} is required")]
        [StringLength(50, MinimumLength = 3,
        ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]
        [DataType(DataType.Text)]
        public string FirstName { get; set; }
        [Required(ErrorMessage = "{0} is required")]
        [StringLength(50, MinimumLength = 3,
        ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]
        [DataType(DataType.Text)]
        public string LastName { get; set; }
        [DataType(DataType.PhoneNumber)]
        [Phone]
        public string PhoneNumber { get; set; }
        [DataType(DataType.EmailAddress)]
        [EmailAddress]
        public string Email { get; set; }
    }
    class Program
    {      
        static void Main(string[] args)
        {
            Author author = new Author();
            author.FirstName = "Joydip";
            author.LastName = ""; //No value entered
            author.PhoneNumber = "1234567890";
            author.Email = "[email protected]";
            ValidationContext context = new ValidationContext
            (author, null, null);
            List validationResults = new
            List();
            bool valid = Validator.TryValidateObject
            (author, context, validationResults, true);
            if (!valid)
            {
                foreach (ValidationResult validationResult in
                validationResults)
                {
                    Console.WriteLine("{0}",
                    validationResult.ErrorMessage);
                }
            }
            Console.ReadKey();
        }
    }

Programı yürüttüğünüzde, konsol penceresinde aşağıdaki hata mesajını görmelisiniz:

LastName is required

C# 'da özel doğrulama özelliği oluşturma

Özel bir doğrulama özniteliği sınıfı oluşturmak için, ValidationAttribute temel sınıfını genişletmeli ve aşağıda verilen kod snippet'inde gösterildiği gibi IsValid yöntemini geçersiz kılmalısınız.

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class IsEmptyAttribute : ValidationAttribute
 {
    public override bool IsValid(object value)
     {
         var inputValue = value as string;
         return !string.IsNullOrEmpty(inputValue);
     }
 }

Aşağıdaki kod snippet'i, Author sınıfının FirstName ve LastName özelliklerini dekore etmek için özel özniteliği nasıl kullanabileceğinizi gösterir.

[IsEmpty(ErrorMessage = "Should not be null or empty.")]
public string FirstName { get; set; }
[IsEmpty(ErrorMessage = "Should not be null or empty.")]
public string LastName { get; set; }

Veri ek açıklamaları ilk olarak Sistemin bir parçası olarak .NET 3.5'te tanıtıldı. ComponentModel. DataAnnotations ad alanı. O zamandan beri .NET'te yaygın olarak kullanılan bir özellik haline geldi. Veri doğrulama kurallarını tek bir yerde tanımlamak için veri ek açıklamalarından yararlanabilir ve böylece aynı doğrulama kodunu tekrar tekrar yazmak zorunda kalmazsınız.

 

Kaynak : https://www.infoworld.com/

#c#