Entity Framework Code First Vs Sql Server: Birebir İlişki(One to one)
İlk olarak Sql Server ile birebir ilişkili bir veritabanı yaptıktan sonra bunu Entiy framework code first yöntemiyle nasıl yapacağımızı anlatacağım.
Sql serverde klasik olarak new database diyerek veritabanını oluşturduktan sonra yeni bir diagram açıyoruz ve tablolarımızı aşağıdaki gibi ilişkilendiriyoruz.
Sql Server’da basit bir şekilde tablolar arasında birebir ilişkiyi yaptık şimdi de aynısını entity framework’de code first yöntemiyle yapmaya geldi.
Mvc projesi açtıktan sonra Models klasörü içine aşağıdaki gibi iki adet sınıf tanımlıyoruz
1 2 3 4 5 6 |
public class Yazar { public int Id { get; set; } public string YayınEviİsmi { get; set; } public virtual YazarBiografi YazarBiografi { get; set; } } |
1 2 3 4 5 6 7 8 |
public class YazarBiografi { public int Id { get; set; } public string Ad { get; set; } public string Soyad { get; set; } public int DogumYili { get; set; } public virtual Yazar Yazar { get; set; } } |
Birebir ilişki yapmamız için ilişkili alanları birbirlerinin sınıfına eklemeliyiz. Yukarıdaki kodlarda görüldüğü gibi Yazar’a ait YazarBiografi tipinde bir property’si bulunmakta aynı şekilde YazarBiografi sınıfında da Yazar property’si bulunuyor. Son olarak da Context sınıfımızda fluent api kullanarak iki tablo arasındaki ilişkiyi yapacağız
1 2 3 4 5 6 7 8 9 10 |
public DbSet<Yazar> Yazarlar { get; set; } public DbSet<YazarBiografi> YazarBiografileri { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Yazar>() .HasRequired(x => x.YazarBiografi) .WithRequiredPrincipal(x => x.Yazar); } |
OnModelCreating içinde yazdığımız metodu türkçeleştirirsek şöyle bir ifade olur; her yazarın zorunlu bir YazarBiografisi vardır Her YazarBiografinin de zorunlu bir Yazar alanı vardır. Bu zorunlu alanları isterseniz required yerine optional yaparak zorunlu olmaktan çıkarabilirsiniz.
Migration İşlemlerine Detaylı bakmak için:
https://okankaradag.com/entity-framewok/entity-framework-migration-komutlari/
Bir sonraki yazıda görüşmek üzere.