Entityframework Code First Fluent Map İlişkileri Tanımlamak

Serkan Üstündağ
Bimar Teknoloji Blog
1 min readJul 4, 2023

EntityFramework Code First kodlamasında en çok zorlanılan konulardan birisi Map class’larında foreign key ilişkilerin gösterilmesidir.

Bu makalede birkaç faydalı link ve örnek paylaşacağım.

Microsoft Learn ile entityframeworktutorial.net konuyu anlamak adına oldukça başarılı içerikler sunuyor.

OnetoOne , OnetoMany, ManytoMany anlatımlarına bu adreslerden bakabilirsiniz.

Şimdi örnekler:

1- OfisEntity uzerinde StokBolgeId ve StokBolgeEntity property’leri var. FK’yi saglayan StokBolgeId alanı ve zorunlu degil. StokBolge tablosunda OfisCollection property’si yok. Bu yuzden WithMany boş.

this.HasOptional(t => t.StokBolge).WithMany().HasForeignKey(t => t.StokBolgeId);​

2- OfisEntity uzerinde LokasyonId ve LokasyonEntity property’leri var. FK’yi saglayan Lokasyon alanı ve zorunlu. Lokasyon tablosunda OfisCollection property’si yok. Bu yuzden WithMany boş.

this.HasRequired(t => t.Lokasyon).WithMany().HasForeignKey(t => t.LokasyonId);

3- DivisionOfisEntity uzerinde OfisId ve OfisEntity property’leri var. OfisId zorunlu. OfisEntity uzerinde DivisionOfis coll yer alıyor.

this.HasMany(t => t.DivisionOfis).WithRequired(t => t.Ofis).HasForeignKey(t => t.OfisId);

4- MenuEntity kendi uzerinde parent child iliskisi var. ParentId alani ile saglanıyor. Zorunlu degil. MenuEntity icerisinde ChildMenu coll var. WithMany bu yuzden dolu.

this.HasOptional(t => t.ParentMenu) .WithMany(t => t.ChildMenus)
.HasForeignKey(d => d.ParentId);

5- MenuEntity’nin many rolu olabilir. Bunun map tanımını MenuRolMap dosyasında yapıyoruz. MenuRol’un mutlaka bir Rol’u olmali.

this.HasRequired(t => t.Rol).WithMany(t => t.RolMenuleri)
.HasForeignKey(d => d.RolId);

Eğer hiçbir şekilde işin içinden çıkamazsanız reverse engineering ile database first yöntemini uygulayın ve üretilen kodu inceleyin. Sonrasında kendiniz yazmaya çalışın.

--

--