{"id":886,"date":"2019-07-12T12:19:59","date_gmt":"2019-07-12T09:19:59","guid":{"rendered":"https:\/\/tukanajans.com\/?p=886"},"modified":"2022-05-01T15:04:25","modified_gmt":"2022-05-01T12:04:25","slug":"ef-core-coktan-coga-iliski-nasil-olusturulur","status":"publish","type":"post","link":"https:\/\/tukanajans.com\/en\/blog\/web-yazilim\/ef-core-coktan-coga-iliski-nasil-olusturulur\/","title":{"rendered":"EF Core \u00e7oktan \u00e7o\u011fa ili\u015fki nas\u0131l olu\u015fturulur?"},"content":{"rendered":"<p><a href=\"https:\/\/docs.microsoft.com\/tr-tr\/ef\/core\/\" target=\"_blank\" rel=\"nofollow noopener\"><strong>Entity Framework Core<\/strong><\/a> ile \u00e7oktan \u00e7o\u011fa veritaban\u0131 ili\u015fkileri kurmak istedi\u011finizde maalesef <strong>Entity Framework 6<\/strong>&#8216;da oldu\u011fu gibi ili\u015fki tablosu ve tablolar aras\u0131 ba\u011flamlar hen\u00fcz otomatik olu\u015fturulmuyor. Microsoft ve .NET toplulu\u011fu EF Core&#8217;daki bu eksikli\u011fin \u00f6n\u00fcm\u00fczdeki s\u00fcr\u00fcmlerde giderilece\u011fini duyurdu.<\/p>\n<p>EF Core ile \u00e7oktan \u00e7o\u011fa veritaban\u0131 ili\u015fkisini kurabilmek i\u00e7in \u00f6ncelikle iki tane s\u0131n\u0131f\u0131 belirleyelim, bu \u00f6rnekte &#8220;Haber&#8221; ve &#8220;Kategori&#8221; s\u0131n\u0131flar\u0131n\u0131 kullanarak tablolar aras\u0131nda \u00e7oktan \u00e7o\u011fa ili\u015fkisini kural\u0131m. \u00d6ncelikle model s\u0131n\u0131flar\u0131m\u0131z\u0131 olu\u015ftural\u0131m;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">public class Haber\n{\npublic int HaberId { get; set; }\npublic string Baslik { get; set; }\npublic string Metin { get; set; }\npublic ICollection&lt;HaberKategori&gt; HaberKategoriler { get; set; }\n}<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">public class Kategori\n{\npublic int KategoriId { get; set; }\npublic string Ad { get; set; }\npublic ICollection&lt;HaberKategori&gt; HaberKategoriler { get; set; }\n}<\/pre>\n<h3>EF Core \u00c7oktan \u00c7o\u011fa Tablosu Olu\u015fturmak<\/h3>\n<p>S\u0131n\u0131flar\u0131m\u0131z\u0131 olu\u015fturdu\u011fumuza g\u00f6re \u015fimdi iki model s\u0131n\u0131f\u0131na ait \u00e7oktan \u00e7o\u011fa ili\u015fki olu\u015fturmak i\u00e7in ba\u011flam model s\u0131n\u0131f\u0131n\u0131 yazal\u0131m;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">public class HaberKategori\n{\npublic int HaberId { get; set; }\npublic Haber Haber { get; set; }\npublic int KategoriId { get; set; }\npublic Kategori Kategori { get; set; }\n}<\/pre>\n<h3>Fluent API Kullanarak \u00c7oktan \u00c7o\u011fa Tan\u0131mlamas\u0131 Yapmak<\/h3>\n<p>S\u0131n\u0131flar\u0131 olu\u015fturduktan sonra ili\u015fkinin ba\u015far\u0131l\u0131 \u015fekilde e\u015fle\u015ftirilebilmesi gerekir. Bu y\u00fczden <strong>EF Core<\/strong> i\u00e7in <strong>Fluent API<\/strong> \u00fczerinden yap\u0131land\u0131rma olu\u015fturaca\u011f\u0131z. DbContext s\u0131n\u0131f\u0131n\u0131z\u0131n i\u00e7erisinde yer alan OnModelCreating aksiyon metodunun i\u00e7erisine bu yap\u0131land\u0131rmay\u0131 yazman\u0131z gerekir;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">protected override void OnModelCreating(ModelBuilder modelBuilder)\n{\nmodelBuilder.Entity&lt;HaberKategori&gt;()\n.HasKey(hk =&gt; new { hk.HaberId, hk.KategoriId });\n\nmodelBuilder.Entity&lt;HaberKategori&gt;()\n.HasOne(hk =&gt; hk.Haber)\n.WithMany(h =&gt; h.HaberKategoriler)\n.HasForeignKey(hk =&gt; hk.HaberId);\n\nmodelBuilder.Entity&lt;HaberKategori&gt;()\n.HasOne(hk =&gt; hk.Kategori)\n.WithMany(k =&gt; k.HaberKategoriler)\n.HasForeignKey(hk =&gt; hk.KategoriId);\n}\n\n<\/pre>\n<p><a href=\"https:\/\/tukanajans.com\/en\/blog\/web-yazilim\/net-core-nedir\/\">Okuma \u00d6nerisi: .NET Core nedir?<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Entity Framework Core ile \u00e7oktan \u00e7o\u011fa veritaban\u0131 ili\u015fkileri kurmak istedi\u011finizde maalesef Entity Framework 6&#8216;da oldu\u011fu gibi ili\u015fki tablosu ve tablolar aras\u0131 ba\u011flamlar [&hellip;]<\/p>","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[113],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/posts\/886"}],"collection":[{"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/comments?post=886"}],"version-history":[{"count":0,"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/posts\/886\/revisions"}],"wp:attachment":[{"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/media?parent=886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/categories?post=886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tukanajans.com\/en\/wp-json\/wp\/v2\/tags?post=886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}