﻿
{"id":3744,"date":"2016-03-22T04:03:39","date_gmt":"2016-03-22T04:03:39","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3744"},"modified":"2016-03-22T04:03:39","modified_gmt":"2016-03-22T04:03:39","slug":"entity-framework-code-first-ile-tablolari-iliskilendirme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-tablolari-iliskilendirme\/","title":{"rendered":"Entity Framework &#8211; Code First \u0130le Tablolar\u0131 \u0130li\u015fkilendirme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-ile-code-first-yaklasimi\/\" target=\"_blank\">Entity Framework \u0130le Code First Yakla\u015f\u0131m\u0131<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda Entity Framework &#8211; Code First yakla\u015f\u0131m\u0131na giri\u015f yaparak nas\u0131l veritaban\u0131 ve tablo olu\u015fturuldu\u011funa ve bu s\u00fcre\u00e7te nelere dikkat edilmesi gerekti\u011fine detayl\u0131ca g\u00f6z atm\u0131\u015ft\u0131k. Bu yaz\u0131m\u0131zda ise Code First yap\u0131s\u0131yla tablolar aras\u0131nda Foreign Key ili\u015fkisi kurmay\u0131 inceleyece\u011fiz.<\/p>\n<p>\u00d6rneklendirmemi bir okul senaryosu \u00fczerine kuraca\u011f\u0131m. Okul veritaban\u0131 olu\u015fturacak, i\u00e7erisinde \u00f6\u011fretmen ve derslere \u00f6zel tablolar bar\u0131nd\u0131raca\u011f\u0131m. \u0130\u015fte gerekli yerlerde senaryoyu d\u00fczenleyip ekleme \u00e7\u0131karma yaparsak nedenini yaz\u0131n\u0131n ak\u0131\u015f\u0131ndan yakalayacaks\u0131n\u0131zd\u0131r.<\/p>\n<p>\u00d6ncelikle \u00f6\u011fretmenler ve derslere \u00f6zel Entity&#8217;lerimizi olu\u015ftural\u0131m. Bu entityler veritaban\u0131m\u0131zda tablo g\u00f6revi g\u00f6recek s\u0131n\u0131flard\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogretmen\r\n    {\r\n        public int OgretmenID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string SoyAdi { get; set; }\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ders\r\n    {\r\n        public int DersID { get; set; }\r\n        public string DersAdi { get; set; }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi \u00f6\u011fretmen ve ders tablolar\u0131m\u0131 nitelendiren s\u0131n\u0131flar\u0131 olu\u015fturmu\u015f oldum.<\/p>\n<p>\u015eimdi bu tablolar aras\u0131nda ili\u015fkiyi \u015fu mant\u0131kla kuraca\u011f\u0131z.<\/p>\n<p>Her \u00f6\u011fretmenin bir dersi mevcuttur lakin her dersin birden fazla \u00f6\u011fretmeni olabilir.<\/p>\n<p>Olaya bu mant\u0131k a\u00e7\u0131s\u0131ndan bak\u0131nca \u00f6\u011fretmenleri a\u015fa\u011f\u0131daki gibi g\u00fcncellemeliyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogretmen\r\n    {\r\n        public int OgretmenID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string SoyAdi { get; set; }\r\n        public int DersID { get; set; }\r\n        public virtual Ders Ders { get; set; }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi her \u00f6\u011fretmenin bir dersi mevcut oldu\u011fundan dolay\u0131 Ders tipinde bir Ders propertysi, int tipinde de DersID propertysi ekledim.<br \/>\nAyn\u0131 mant\u0131kla dersleride a\u015fa\u011f\u0131daki gibi g\u00fcncellemeliyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ders\r\n    {\r\n        public int DersID { get; set; }\r\n        public string DersAdi { get; set; }\r\n        public virtual List&lt;Ogretmen&gt; Ogretmenler { get; set; }\r\n    }\r\n<\/pre>\n<p>Madem her bir dersin birden fazla \u00f6\u011fretmeni olabilir, bir \u00f6\u011fretmenler tipinde liste \u015feklinde property tuttum.<\/p>\n<p>\u015eimdi bu yapt\u0131\u011f\u0131m i\u015flemlerle server aras\u0131nda ba\u011flant\u0131y\u0131 olu\u015fturacak Context&#8217;timizi yazal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class OkulDbContext : DbContext\r\n    {\r\n        public DbSet&lt;Ogretmen&gt; Ogretmenler { get; set; }\r\n        public DbSet&lt;Ders&gt; Dersler { get; set; }\r\n    }\r\n<\/pre>\n<p>Ard\u0131ndan veritaban\u0131 olu\u015fturmas\u0131 i\u00e7in server bilgilerimizi config dosyas\u0131nda olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  &lt;connectionStrings&gt;\r\n    &lt;add name=&quot;OkulDbContext&quot; connectionString=&quot;Server=.;Database=OkulVeriTabani;Trusted_Connection=true;&quot; providerName=&quot;System.Data.SqlClient&quot;\/&gt;\r\n  &lt;\/connectionStrings&gt;\r\n<\/pre>\n<p>Ve son olarak Context s\u0131n\u0131f\u0131m\u0131zdan bir nesne olu\u015fturup, gerekli veritaban\u0131 ve tablolar\u0131m\u0131z\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OkulDbContext Veri = new OkulDbContext();\r\n            Veri.Database.Create();\r\n        }\r\n    }\r\n<\/pre>\n<p>SQL Server&#8217;\u0131 incelersek e\u011fer,<br \/>\n<div id=\"attachment_3746\" style=\"width: 174px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-tablolari-iliskilendirme\/entity-framework-code-first-ile-tablolari-iliskilendirme\/\" rel=\"attachment wp-att-3746\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3746\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme.png\" alt=\"Entity Framework - Code First \u0130le Tablolar\u0131 \u0130li\u015fkilendirme\" width=\"164\" height=\"379\" class=\"size-full wp-image-3746\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme.png 164w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme-130x300.png 130w\" sizes=\"auto, (max-width: 164px) 100vw, 164px\" \/><\/a><p id=\"caption-attachment-3746\" class=\"wp-caption-text\">Entity Framework &#8211; Code First \u0130le Tablolar\u0131 \u0130li\u015fkilendirme<\/p><\/div><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi veritaban\u0131 ve tablolar\u0131m\u0131z olu\u015fturulmu\u015ftur. Bunlar\u0131n yan\u0131nda tablolar\u0131n aras\u0131ndaki ili\u015fkide a\u015fikard\u0131r.<br \/>\nDiyagramdan da incelemek gerekirse,<br \/>\n<div id=\"attachment_3747\" style=\"width: 459px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-tablolari-iliskilendirme\/entity-framework-code-first-ile-tablolari-iliskilendirme-2\/\" rel=\"attachment wp-att-3747\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3747\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme-1.png\" alt=\"Entity Framework - Code First \u0130le Tablolar\u0131 \u0130li\u015fkilendirme\" width=\"449\" height=\"402\" class=\"size-full wp-image-3747\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme-1.png 449w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-First-\u0130le-Tablolar\u0131-\u0130li\u015fkilendirme-1-300x269.png 300w\" sizes=\"auto, (max-width: 449px) 100vw, 449px\" \/><\/a><p id=\"caption-attachment-3747\" class=\"wp-caption-text\">Entity Framework &#8211; Code First \u0130le Tablolar\u0131 \u0130li\u015fkilendirme<\/p><\/div><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi tablolar aras\u0131nda bu \u015fekilde ili\u015fki kurulmaktad\u0131r.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir \u00f6nceki Entity Framework \u0130le Code First Yakla\u015f\u0131m\u0131 ba\u015fl\u0131kl\u0131 yaz\u0131mda Entity Framework &#8211; Code First yakla\u015f\u0131m\u0131na giri\u015f yaparak nas\u0131l veritaban\u0131 ve tablo olu\u015fturuldu\u011funa ve bu s\u00fcre\u00e7te nelere dikkat edilmesi gerekti\u011fine detayl\u0131ca g\u00f6z atm\u0131\u015ft\u0131k.&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3739,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[955],"tags":[967,952,964,965,963,966],"class_list":["post-3744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-entity-framework","tag-code-firset-constraint","tag-code-first","tag-ef-constraint","tag-ef-foreign-key","tag-entity-framework","tag-iliskiler"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=3744"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3744\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3739"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=3744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}