Modern yazılım geliştirme süreçlerinde veri doğrulama, hem güvenlik hem de veri bütünlüğünü sağlama açısından kritik bir öneme sahiptir.
- Yazılım Uzmanları
- 08 Aralık 2024
- 37 kez görüntülendi.
Tabii ki! İşte "Veri Doğrulama (Data Validation) ve EF Core Entegrasyonu" konulu SEO uyumlu bir makale:
Veri Doğrulama (Data Validation) ve EF Core Entegrasyonu
Modern yazılım geliştirme süreçlerinde veri doğrulama, hem güvenlik hem de veri bütünlüğünü sağlama açısından kritik bir öneme sahiptir. Entity Framework Core (EF Core) gibi ORM araçlarıyla çalışırken veri doğrulama işlemleri, veritabanı ile iş katmanı arasında sorunsuz bir entegrasyon sağlayarak hatasız bir uygulama oluşturulmasını destekler.
Bu makalede, EF Core ile veri doğrulamanın nasıl entegre edileceğini detaylı bir şekilde ele alacağız ve bunu yaparken kod örnekleriyle açıklamalar sunacağız.
Veri Doğrulama Nedir?
Veri doğrulama, bir sistemde işlenmeden önce kullanıcılardan alınan verilerin belirli kurallara uygun olup olmadığını kontrol etme işlemidir. Örneğin:
- Bir e-posta adresinin doğru formatta olması,
- Yaş bilgisinin negatif olmaması,
- Tarih alanlarının mantıklı değerler taşıması.
Bu doğrulama kuralları, hem istemci tarafında (frontend) hem de sunucu tarafında (backend) uygulanabilir. Ancak güvenlik ve veri tutarlılığı için sunucu tarafındaki doğrulama daha önemlidir.
EF Core'da Veri Doğrulama Yöntemleri
EF Core, veri doğrulama işlemleri için farklı yaklaşımlar sunar:
- Data Annotations (Veri Ek Açıklamaları): Özellikle küçük projelerde hızlı ve kolay bir çözüm sağlar.
- Fluent API: Daha karmaşık doğrulama senaryolarında kullanılır.
- Custom Validation (Özel Doğrulama): Projeye özgü kurallar yazılmasını sağlar.
1. Data Annotations ile Veri Doğrulama
Data Annotations, model sınıflarına uygulanan bir dizi öznitelik ile çalışır. Örneğin:
using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required(ErrorMessage = "Ürün adı zorunludur.")]
[StringLength(100, ErrorMessage = "Ürün adı 100 karakterden uzun olamaz.")]
public string Name { get; set; }
[Range(1, 1000, ErrorMessage = "Fiyat 1 ile 1000 arasında olmalıdır.")]
public decimal Price { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
}
Bu örnekte:
Required
ile boş değerlerin engellenmesi sağlanır.StringLength
ile maksimum uzunluk belirlenir.Range
ile belirli bir aralık kontrolü yapılır.
2. Fluent API ile Veri Doğrulama
Fluent API, doğrulama kurallarını programatik olarak tanımlamak için kullanılır:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>(entity =>
{
entity.Property(p => p.Name)
.IsRequired()
.HasMaxLength(100);
entity.Property(p => p.Price)
.IsRequired()
.HasColumnType("decimal(18,2)");
entity.Property(p => p.ReleaseDate)
.HasColumnType("date");
});
}
}
Fluent API, özellikle veritabanı şemasının kontrolü ve daha karmaşık doğrulama kuralları için tercih edilir.
3. Özel Doğrulama (Custom Validation)
Projenize özel doğrulama kuralları gerektiğinde, doğrulama mantığını ayrı bir metot veya sınıfta tanımlayabilirsiniz:
using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[PriceValidation]
public decimal Price { get; set; }
}
public class PriceValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value is decimal price && price < 0)
{
return new ValidationResult("Fiyat negatif olamaz.");
}
return ValidationResult.Success;
}
}
Bu yöntemle, Price
özelliği için özel bir doğrulama kuralı tanımlanmıştır.
Veri Doğrulama ve EF Core Entegrasyonu
EF Core, veri doğrulama kurallarını otomatik olarak devreye almaz. Bu nedenle, DbContext
üzerinden SaveChanges
çağrıldığında doğrulama işlemlerini manuel olarak çalıştırmak gerekebilir:
Örnek: Doğrulama ve Kaydetme İşlemi
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries())
{
if (entry.Entity is IValidatableObject validatableEntity)
{
var validationContext = new ValidationContext(validatableEntity);
Validator.ValidateObject(validatableEntity, validationContext, validateAllProperties: true);
}
}
return base.SaveChanges();
}
}
public class Product : IValidatableObject
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Price <= 0)
{
yield return new ValidationResult("Fiyat sıfırdan büyük olmalıdır.", new[] { nameof(Price) });
}
}
}
Bu kodda:
IValidatableObject
kullanılarak model seviyesinde doğrulama yapılır.SaveChanges
metodu, her bir entity için doğrulama işlemini tetikler.
Sonuç
EF Core ile veri doğrulama, uygulamanızın güvenliğini ve veritabanı bütünlüğünü sağlamak için güçlü bir araçtır. Data Annotations, Fluent API ve özel doğrulama yöntemlerini doğru bir şekilde kullanarak, hem kullanıcı deneyimini hem de veri güvenliğini geliştirebilirsiniz.
Bu rehberde ele alınan yöntemlerden ihtiyacınıza uygun olanı seçerek projelerinizde hızlıca uygulamaya geçebilirsiniz. Unutmayın, sağlam bir veri doğrulama stratejisi, başarılı bir yazılım çözümünün temel taşlarından biridir.
Bu yazıya 0 yorum yapılmış.