Bu yazımızda .net core mvc projelerinde code first anlayışıyla geliştirme yaparken entity framework’de benzersiz veri girişi sağlamayı anlatacağız.
Bunun için ne kullanacağız?
Entity framework Fluent Api‘nin haskey() metodunu kullanacağız.
Kaynak isteriz! illa sizin kaynağınızı mı okuyacağız?
Buyurun: https://docs.microsoft.com/tr-tr/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key%2Csimple-key
Öncelikle bir örnekle hangi durumlarda kullanacağımızı bilelim.
Nerede kullanılmaz?
- Bir öğrenci aynı kursa yeniden kayıt olabilir.
- Bir müşteri aynı ürünü birkaç sefer alabilir.
Yukarıdaki örnek verilen durumlarda bileşik id (primary key) kullanılması anlamsızdır. Bu durumlarda join tablosuna tarih ve saat bilgisi eklenmesi yeterlidir.
Nerede kullanılır?
Aynı ürün, aynı kategoriye bir defa eklenmelidir.
Kullanıcı bir ürünü, örneğin çaykur tiryaki çayını (2) sürekli olarak çay (6) kategorisine eklemeye çalışıyor. Bir defa bu kategoriye eklenmesi yeterli.
Kullanıcı ara yüzden bu kategoriyi tekrar seçememeli ya da eklerken zaten ekli olarak hata verilmeli. Verinin düzeni açısından da tabloda birleşik id kullanılmalı.
Nasıl çalışır?
ürün referansı ve kategori referansı birleştirilerek, benzersiz referanslı primary key oluşturulur.
Hadi artık nasıl yapacağız?
Bu tanımlamayı veri tabanımızı temsil eden DbContext sınıfında yapacağız.
Bu dosyayı ~/data/[verdiğinizisim]Context.cs adresinde bulabilirsiniz.
Çözüm:
Model oluşturulurken çalışacak metodu ezerek:
KategoriUrun tablosu yani join tablosu varlıklarından (tablolarından), haskey() metodunu kullanarak birinci tablodaki UrunId alanı ile ikinci tablodaki kategoriId alanlarını birleştirerek primary key (birleşik id) oluşturduk.
Join Tablosu: KategoriUrun
Pirimary key referansı: 1.Tablo: UrunId + 2.Tablo: KategoriId
Faydalı olması dileğiyle…