Entity Framework kullanarak Soft Delete işlemi nedir ve neden kullanılmalıdır? Bu makalede, veritabanındaki kaydın tamamen silinmesi yerine silindiğini belirten bir işaretin güncellenmesiyle yapılan Soft Delete işleminin ve uygulanma adımlarının yanı sıra, veri bütünlüğünü ve arşivleme işlemlerinin önemini açıklıyoruz Soft Delete, verilerin güvenliğini ve geri kazanılabilirliğini sağlar ve veri kaybını önlerken yasal yükümlülükleri yerine getirmek için kullanılabilir Örnek kodlar ve önemli noktalara dikkat edilmesi gerektiği de belirtiliyor

Bu makalede, Entity Framework üzerinde Soft Delete işleminin nasıl gerçekleştirileceğini ve neden kullanılması gerektiğini açıklayacağız. Soft Delete, kayıtların veritabanından tamamen silinmesi yerine, silindiğine dair bir işaretin güncellenmesi işlemidir. Bu yöntem, veri bütünlüğünü korumak ve arşivleme işlemlerinde kullanmak için oldukça önemlidir.
Entity Framework ile Soft Delete işlemi oldukça basittir ve birkaç adımda gerçekleştirilebilir. Soft Delete işlemi uygulanabilmesi için veritabanı tablosunda bir 'Deleted' alanı eklenmelidir. Bu alanın değeri 'true' ise, kayıt silinmiş kabul edilir. Daha sonra, Entity Framework kontekste Soft Delete işlemi eklenebilir. Bunun için, Soft Delete özellikli bir sınıf oluşturulabilir ya da var olan sınıfın içine Soft Delete metodları yazılabilir.
Bu yöntem, verilerin silinmesini korumak ve geri kazanmak için oldukça kullanışlıdır. Ancak, Soft Delete işleminin uygulanmasından önce, arşivlenecek verilerin doğru bir şekilde seçilmesi ve güvenli bir şekilde arşivlenmesi önemlidir. Verilerin yanlışlıkla silinmesi durumunda, geri getirme işlemi oldukça zordur.
Soft Delete Nedir?
Soft Delete veya Yumuşak Silme, veri tabanlarında bir kaydın tamamen silinme işlemi yerine, kaydın silindiğini belirten bir alanın güncellenmesi işlemidir. Yani, kaydın varlığı ve veri bütünlüğü korunur. Bu işlem sayesinde, herhangi bir hata sonucu silinen bir kaydı geri getirme işlemi de çok daha kolay hale gelir.
Bir veri tabanı işlemi olan Soft Delete, özellikle yönetimsel/ yönetişimsel açıdan da önemlidir. Veriler sağlam kalır, gerektiğinde geri getirilebilir ya da duruma göre arşivlenebilir. Bu şekilde, kayıtların silinmesi durumunda veritabanında çöpe gitmesi yerine, arşivlenerek daha sonra önemli bilgilerin geri getirilmesi mümkün olur.
Soft Delete Neden Kullanılır?
Veri tabanı işlemleri, uygulama geliştirme sürecinde oldukça önemlidir. Bu nedenle, veri bütünlüğünü koruma konusu oldukça önemlidir. Soft Delete işlemi, verilerin gerçekten silinmesi yerine arşivlenmesi işlemidir. Bu sayede, veriler kaybolmadan önce gerektiğinde geri kazanılabilmektedir. Bu da veri kaybının önüne geçmek için oldukça önemlidir.
Bir veri kaydı bir kere silinirse, tekrar geri kazanmak mümkün olmayabilir. Ancak kaydın arşivlenmesi sayesinde, kayıtların hatalı ya da yanlışlıkla silinmesi durumunda bile geri kazanılması mümkündür. Bu da, veri bütünlüğünü korurken verilerin güvenliğini de sağlamaktadır.
Soft Delete işlemi ayrıca verileri korumak için de kullanılabilir. Verileri silmek yerine arşivlemek, verilerin her zaman korunmasını ve yasal yükümlülüklerin yerine getirilmesini sağlar. Ayrıca, kullanıcı hataları veya kötü amaçlı kişilerin saldırılarında bile verilerin kaybedilmesi önlenebilir.
- Verilerin arşivlenmesi, veri bütünlüğünü korurken, verilerin geri kazanılabilirliğini sağlar.
- Soft Delete işlemi, verilerin güvenliğini sağlamak ve yasal yükümlülükleri yerine getirmek için kullanılabilir.
- Hatalı silinmeler veya kötü amaçlı saldırılarda bile verilerin kaybedilmesi önlenebilir.
Soft Delete Nasıl Uygulanır?
=Entity Framework ile Soft Delete işlemi, birkaç adımda gerçekleştirilebilir. İlk olarak, veritabanı tablosunda bir 'Deleted' alanı eklenir. Bu alanın varsayılan değeri 'false' olmalıdır. Mümkünse, Unique Index de eklenmelidir.
Daha sonra, Entity Framework kontekste Soft Delete işlemi eklenebilir. Bunun için, DbContext sınıfında silinecek bir nesne çekilir ve 'Deleted' alanı 'true' olarak güncellenir. Ardından, SaveChanges() fonksiyonu çağrılır. Bu işlem, veri tabanında taslak bir kayıt oluşturmak yerine, kaydı işaretleyecek ve kullanıcılara sunarken bu bilgiyi kullanacak.
Bu işlemi gerçekleştirmek için Entity Framework Core için hazır uygulanmış bir 'Soft Delete' mevcuttur. Fakat, Entity Framework versiyon 5 için işlem daha farklı yapılabilir. İlk olarak, silinecek kaydı bulmak için Where() fonksiyonu kullanılır ve ardından onu gerçekten silmek istemediğimiz için güncellenir.
Entity Framework Core için: | public async Task |
---|---|
Entity Framework 5 için: | entityManager.Set |
Entity Framework ile Soft Delete işlemi, güncel bir teknik olarak görülür ve veri bütünlüğünü korumaya yardımcı olur. Uygulaması kolay olmakla beraber, bazı önemli noktalara dikkat edilmelidir. İşlemin birkaç adımda gerçekleştirilmesi, veri tabanında kaydın işaretlenmesi, taslak bir kayıt oluşturmak gibi detaylar, uygulanırken doğru biçimde takip edilmelidir.
Kod Örnekleri
Entity Framework ile Soft Delete işlemi, birkaç basit adımda gerçekleştirilebilir. İlk önce 'Deleted' adlı bir alan eklenir ve var olan veriler 'false' değerine sahip olur. Soft Delete işlemi gerçekleştirildiğinde ise, bu alan 'true' değerine güncellenir.
Aşağıda, Entity Framework ile Soft Delete işlemini gerçekleştirmek için kullanabileceğiniz örnek kodlar yer almaktadır:
public interface ISoftDeletable{ bool Deleted { get; set; }}public class Product : ISoftDeletable{ public int Id { get; set; } public string Name { get; set; } public bool Deleted { get; set; }}
public class ProductContext : DbContext{ public DbSet
Products { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder);
modelBuilder.Entity
().Map(m => m.Requires("Deleted").HasValue(false)).Ignore(m => m.Deleted); } public override int SaveChanges() { foreach (var entry in ChangeTracker.Entries().Where(e => e.Entity is ISoftDeletable && e.State == EntityState.Deleted)) { entry.State = EntityState.Modified; entry.CurrentValues["Deleted"] = true; }
return base.SaveChanges(); }}
Yukarıdaki kodlarda, Product sınıfı 'ISoftDeletable' arayüzünü implemente eder. ProductContext sınıfında, OnModelCreating yöntemi ile 'Deleted' alanı false olarak ayarlanır. SaveChanges yönteminde ise, silinme işlemi gerçekleştirildiğinde kaydın 'Deleted' alanı true olarak güncellenir. Bu sayede, veritabanındaki kayıtlar gerçekleştirilen Soft Delete işlemi sonrasında saklanır ve gerektiği zaman geri yüklenebilir.
Örnek Senaryo
Bu örnek senaryoda, bir ürünün Soft Delete işlemi üzerinden, Entity Framework ile Soft Delete adım adım nasıl gerçekleştirildiği açıklanacaktır. Öncelikle, veritabanında 'Products' adlı bir tablo oluşturulur. Tablo, ürünlerin tutulacağı alanları içerecektir.
Tablo Alanı | Veri Tipi |
---|---|
ProductId | int |
ProductName | nvarchar(MAX) |
Price | decimal(18,2) |
Deleted | bit |
Gördüğünüz gibi, 'Deleted' adında bir bit tipinde bir alan ekledik. Bu alan, ürünün silinip silinmediğini belirleyecek.
Sonraki adım, 'SoftDeleteContext' adlı bir sınıf oluşturmaktır. Bu sınıf, Entity Framework ile işimizi kolaylaştıracak ve Soft Delete işlemini gerçekleştirecektir.
public class SoftDeleteContext : DbContext{ public DbSetProducts { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity ().Map(m => { m.ToTable("Products"); }).HasKey(x => x.Id); modelBuilder.Entity ().Property(x => x.Id).HasColumnName("ProductId"); modelBuilder.Entity ().Property(x => x.ProductName).HasColumnName("ProductName"); modelBuilder.Entity ().Property(x => x.Price).HasColumnName("Price"); modelBuilder.Entity ().Property(x => x.Deleted).HasColumnName("Deleted"); modelBuilder.Entity ().Ignore(x => x.IsDeleted); }}
SoftDeleteContext sınıfı ile birlikte, 'Product' adında bir sınıf da oluşturulmuştur. Bu sınıf, 'Product' adlı tablodaki kayıtların modelini temsil eder.
public class Product{ public int Id { get; set; } public string ProductName { get; set; } public decimal Price { get; set; } public bool Deleted { get; set; } [NotMapped] public bool IsDeleted { get; set; }}
Entity Framework, veritabanındaki 'Deleted' alanının varlığına göre kaydın silinip silinmediğini belirleyebilir. Ancak, bu alanı doğrudan kullandığımızda veri bütünlüğü açısından sorunlar ortaya çıkabilir. Bu nedenle, 'Product' sınıfında 'IsDeleted' adlı geçici bir alan ekledik. Bu alan, verinin işaretlenip işaretlenmediğini belirleyecek.
İşte tamamdır! Artık bir ürünün Soft Delete işlemi nasıl yapılır, adım adım öğrendiniz. Bu örnek senaryo, Entity Framework ile Soft Delete işleminin ne kadar kolay uygulanabileceğini göstermektedir.
Önemli Noktalar
Soft Delete işlemi, veri bütünlüğünü korumanın yanı sıra geri dönüşümden de faydalanmak için kullanılan bir yöntemdir. Ancak, bu işlemi uygularken bazı noktalara dikkat edilmesi gerekmektedir.
- Silme işlemi, gerçekten gerekli mi? Verilerin kaybolması veya bozulması gibi durumlarda silme işlemi gerçekleştirilmelidir. Aksi takdirde, veriler Soft Delete işlemi ile arşivlenerek geri kazanılabilir.
- Deleted alanı kontrol edilmeli. Soft Delete işlemi uygulanmış kayıtları sorgularken, "Deleted" alanının kontrol edilmesi gerekmektedir.
- Veritabanının performansı etkilenebilir. Soft Delete işlemi, arşivlenen kayıtlar nedeniyle veritabanının boyutunu artırabilir ve performansını etkileyebilir. Bu nedenle, gereksiz yere arşivleme yapılmamalıdır.
- Entity Framework sürümü uyumluluğu. Soft Delete işlemi, Entity Framework sürümüne göre değişiklik gösterebilir. Bu nedenle, uygun sürümün kullanılması ve dokümantasyonun dikkatlice okunması gerekmektedir.
Soft Delete işlemi, veri güvenliği için önemlidir. Ancak, veritabanının performansı ve Entity Framework uyumluluğu gibi faktörler de göz önünde bulundurulmalıdır. Bu noktalara dikkat edildiğinde, Soft Delete işlemi başarıyla uygulanabilir ve veri bütünlüğü korunabilir.
Sonuç
Sonuç olarak, Entity Framework ile Soft Delete işlemi birçok proje için oldukça faydalı bir yöntemdir. Bu işlem, ürünlerin ve kayıtların silinmesi yerine arşivlenmesini sağlar ve buna bağlı olarak veri bütünlüğünü korur. Makalemizde, Soft Delete nedir, neden kullanılmalıdır ve nasıl uygulanır gibi konular detaylı bir şekilde ele alınmıştır. Soft Delete işlemi uygulanırken dikkat edilmesi gereken noktalar da aktarılmıştır.