﻿
{"id":12285,"date":"2019-10-30T23:01:53","date_gmt":"2019-10-30T23:01:53","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=12285"},"modified":"2019-10-30T23:01:53","modified_gmt":"2019-10-30T23:01:53","slug":"asp-net-core-3-0-cok-katmanli-mimaride-migration-islemleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-3-0-cok-katmanli-mimaride-migration-islemleri\/","title":{"rendered":"Asp.NET Core 3.0 &#8211; \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde <a href=\"https:\/\/www.gencayyildiz.com\/blog\/c-ta-n-tier-architecturecokn-katmanli-mimari\/\" rel=\"noopener noreferrer\" target=\"_blank\">\u00e7ok katmanl\u0131 mimari<\/a> yap\u0131lanmas\u0131n\u0131n kullan\u0131ld\u0131\u011f\u0131 Asp.NET Core 3.0 uygulamalar\u0131nda migration i\u015flemlerinin nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini inceleyece\u011fiz.<\/p>\n<p>Her\u015feyden \u00f6nce ilk olarak \u00f6rnek bir Asp.NET Core 3.0 uygulamas\u0131 a\u00e7\u0131yoruz. Bu uygulama bizim sunum katman\u0131m\u0131z<em>(PL &#8211; Presentation Layer)<\/em> olacakt\u0131r. Hemen ard\u0131nda i\u015f katman\u0131m\u0131z\u0131<em>(BL &#8211; Busines Layer)<\/em> ve veri eri\u015fim katman\u0131m\u0131z\u0131<em>(DAL &#8211; Data Access Layer)<\/em> olu\u015ftural\u0131m.<\/p>\n<p>Makalemizin ba\u015fl\u0131\u011f\u0131nda ifade edildi\u011fi gibi migration odakl\u0131 bir i\u00e7erik geli\u015ftirece\u011fiz. Haliyle generate edilecek olan migrationlar dahil Entity Framework Core &#8211; Code First kurulumuna dair t\u00fcm \u00e7al\u0131\u015fmalar\u0131m\u0131z\u0131 DAL katman\u0131nda ger\u00e7ekle\u015ftirece\u011fiz. Dolay\u0131s\u0131yla a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde de oldu\u011fu gibi context nesnesi ile birlikte t\u00fcm entitylerin DAL katman\u0131nda dizany edilmesi gerekmektedir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"949\" height=\"332\" class=\"aligncenter size-full wp-image-12289\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri.jpg 949w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-300x105.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-768x269.jpg 768w\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/a><\/p>\n<p>Bu haz\u0131rbulunu\u015fluktan sonra art\u0131k yap\u0131lmas\u0131 gerekenleri ad\u0131m ad\u0131m ele alal\u0131m&#8230;<\/p>\n<blockquote><p><strong style=\"color:blue\">Asp.NET Core 3.0&#8217;da s\u0131k\u0131nt\u0131s\u0131z \u00e7al\u0131\u015fmak istiyorsan\u0131z e\u011fer <em style=\"color:green\">dotnet tool install &#8211;global dotnet-ef<\/em> komutunu \u00e7al\u0131\u015ft\u0131r\u0131rarak dotnet ef arac\u0131n\u0131 en son s\u00fcr\u00fcm\u00fcyle g\u00fcncelle\u015ftiriniz.<\/strong><\/p><\/blockquote>\n<p>\u0130lk olarak DAL katman\u0131nda geli\u015ftirilen context nesnesinin Asp.NET Core uygulamas\u0131na dahil edilmesi gerekmektedir. Bunun i\u00e7in \u00f6ncelikle ilgili katman\u0131 PL katman\u0131na referans olarak eklememiz gerekiyor.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-1.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"210\" height=\"160\" class=\"aligncenter size-full wp-image-12296\" \/><\/a><br \/>\nArd\u0131ndan Startup.cs dosyas\u0131ndaki ConfigureServices metodu i\u00e7erisinde &#8220;AddDbContext&#8221; metodu ile a\u015fa\u011f\u0131daki gibi uygulamaya dahil edilmesi gerekmektedir. Burada sa\u011fl\u0131kl\u0131 \u00e7al\u0131\u015fabilmeniz i\u00e7in &#8220;<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.EntityFrameworkCore.SqlServer\/\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.EntityFrameworkCore.SqlServer<\/a>&#8221; k\u00fct\u00fcphanesini uygulamaya eklemeniz gerekmektedir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"1156\" height=\"399\" class=\"aligncenter size-full wp-image-12298\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2.jpg 1156w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2-300x104.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2-768x265.jpg 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-2-1024x353.jpg 1024w\" sizes=\"auto, (max-width: 1156px) 100vw, 1156px\" \/><\/a><\/p>\n<p>Yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde ye\u015fil daire i\u00e7erisine ald\u0131\u011f\u0131m\u0131z kod uygulaman\u0131n <em>appsettings.json<\/em> dosyas\u0131ndaki &#8220;ConnectionStrings&#8221; alan\u0131 i\u00e7erisindeki &#8220;SQLProvider&#8221; isimli alan\u0131n de\u011ferini getirmektedir. <\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;Logging&quot;: {\r\n    &quot;LogLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Information&quot;,\r\n      &quot;Microsoft&quot;: &quot;Warning&quot;,\r\n      &quot;Microsoft.Hosting.Lifetime&quot;: &quot;Information&quot;\r\n    }\r\n  },\r\n  &quot;AllowedHosts&quot;: &quot;*&quot;,\r\n  &quot;ConnectionStrings&quot;: {\r\n    &quot;SQLProvider&quot;: &quot;Server=.;Database=NTierDB;Trusted_Connection=True;&quot;\r\n  }\r\n}\r\n<\/pre>\n<p>Mavi renkli daire i\u00e7erisinde ise generate edilecek olan migrationlar\u0131n hangi katmana at\u0131laca\u011f\u0131n\u0131 belirlemekteyiz.<\/p>\n<p>Bu i\u015flemden sonra Package Manager Console \u00fczerinden migration talebinde bulunabiliriz.<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-3.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"696\" height=\"225\" class=\"aligncenter size-full wp-image-12308\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-3.jpg 696w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-3-300x97.jpg 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n<p>Oda ne!<br \/>\n<em>add-migration mig_1<\/em> komutunu verdi\u011fimizde,<\/p>\n<blockquote><p>\n<em><strong>add-migration : The term &#8216;add-migration&#8217; is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.<\/strong><\/em>\n<\/p><\/blockquote>\n<p>hatas\u0131n\u0131 almaktay\u0131z!<\/p>\n<p>Bu hatay\u0131 \u00e7\u00f6zebilmek i\u00e7in PL katman\u0131na &#8220;<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.EntityFrameworkCore.Tools\/3.1.0-preview1.19506.2\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.EntityFrameworkCore.Tools<\/a>&#8221; k\u00fct\u00fcphanesini y\u00fcklememiz gerekmektedir. &#8220;<em><strong>La hoca, bizim i\u015fimiz DAL katman\u0131yla de\u011fil mi? Ne diye PL&#8217;ye y\u00fckl\u00fcyoruz?<\/strong><\/em>&#8221; dedi\u011finizi duyar gibiyim. Evet&#8230; PL&#8217;ye y\u00fcklememiz gerekmektedir \u00e7\u00fcnk\u00fc ana uygulamam\u0131zd\u0131r. Her ne kadar package manager penceresinden isteklerde bulunsakta compiler \u00f6ncelikle ana uygulamaya gitmekte ve ard\u0131ndan ilgili katman\u0131n(DAL) .dll dosyas\u0131 \u00fczerinden gerekli \u00e7al\u0131\u015fmay\u0131 sergilemektedir. Eee dolay\u0131s\u0131yla buradaki t\u00fcm aktiviteyi ilgili Tools k\u00fct\u00fcphanesi \u00fcstlendi\u011fi i\u00e7in PL&#8217;ye y\u00fcklenmesi gerekmektedir.<\/p>\n<p>Velhas\u0131l ilgili k\u00fct\u00fcphaneyi y\u00fckledikten sonra tekrar Package Manager Console \u00fczerinden migration talebinde bulundu\u011fumuzda,<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-4.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"567\" height=\"440\" class=\"aligncenter size-full wp-image-12312\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-4.jpg 567w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-4-300x233.jpg 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/a><br \/>\ng\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere ba\u015far\u0131yla migrationlar olu\u015fturulmaktad\u0131r.<\/p>\n<p>Evet&#8230; Buna sevinebiliriz ama bir sorunumuz var. DAL katman\u0131nda generate edilen migrationlar a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi hata vermektedirler \ud83d\ude15<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-5.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"497\" height=\"472\" class=\"aligncenter size-full wp-image-12317\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-5.jpg 497w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-5-300x285.jpg 300w\" sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><\/a><\/p>\n<p>Bu hatan\u0131n nedeni DAL katman\u0131nda migration yap\u0131lanmas\u0131nda kullan\u0131lan k\u00fct\u00fcphanelerin dahil edilmemesidir. Bunun i\u00e7in yukar\u0131larda kulland\u0131\u011f\u0131m\u0131z &#8220;<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.EntityFrameworkCore.SqlServer\/\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.EntityFrameworkCore.SqlServer<\/a>&#8221; k\u00fct\u00fcphanesini DAL katman\u0131na entegre etmememiz yeterli olacakt\u0131r.<\/p>\n<p>Netice olarak package manager console \u00fczerinden generate edilen migrationlar <em>update-database<\/em> komutuyla veritaban\u0131na yans\u0131t\u0131lacak ve tasar\u0131m\u0131m\u0131z ba\u015far\u0131l\u0131 bir \u015fekilde i\u015flemeye devam edecektir. <\/p>\n<p>Asl\u0131nda makalemizi burada sonland\u0131rabiliriz lakin i\u00e7erikte ele al\u0131nan t\u00fcm yap\u0131lanmay\u0131 bir Komut \u0130stemi yahut Powershell penceresinde de ger\u00e7ekle\u015ftirmek isteyenleriniz olacakt\u0131r. Nihayetinde herkes Visual Studio kullanmayabilir, dolay\u0131s\u0131yla package manager console penceresi olmayabilir&#8230; \ud83d\ude09<\/p>\n<p>Bizim kullan\u0131m s\u0131n\u0131rlar\u0131m\u0131z i\u00e7erisinde powershell ile komut istemi birebir ayn\u0131 \u00f6zellikte yap\u0131lanmalar oldu\u011funda dolay\u0131 bu makalemizde powershell \u00fczerinden ak\u0131\u015fa devam edece\u011fiz. Biraz \u00f6nce olu\u015fturulan migrationlar\u0131 silip, mevcut durumda powershell \u00fczerinden bir migration olu\u015fturmaya \u00e7al\u0131\u015f\u0131yor olsayd\u0131k a\u015fa\u011f\u0131daki gibi bir hatayla kar\u015f\u0131la\u015facakt\u0131k.<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-6.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"736\" height=\"140\" class=\"aligncenter size-full wp-image-12330\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-6.jpg 736w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-6-300x57.jpg 300w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/a><br \/>\nHatam\u0131z\u0131n metinsel hali;<\/p>\n<blockquote><p><em><strong>Your startup project &#8216;DAL&#8217; doesn&#8217;t reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.<\/strong><\/em><\/p><\/blockquote>\n<p>\u015feklindedir.<\/p>\n<p>Bu hatay\u0131 d\u00fczeltebilmek i\u00e7in hata mesaj\u0131nda da belirtildi\u011fi gibi &#8220;<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.EntityFrameworkCore.Design\/3.1.0-preview1.19506.2\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.EntityFrameworkCore.Design<\/a>&#8221; k\u00fct\u00fcphanesini DAL katman\u0131na y\u00fcklememiz gerekmektedir.<\/p>\n<p>Ard\u0131ndan tekrar powershell \u00fczerinden migration basmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131zda da a\u015fa\u011f\u0131daki hatayla kar\u015f\u0131la\u015f\u0131lacakt\u0131r.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-7.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-7.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"718\" height=\"44\" class=\"aligncenter size-full wp-image-12335\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-7.jpg 718w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-7-300x18.jpg 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/a><\/p>\n<blockquote><p><em><strong>Unable to create an object of type &#8216;NTierContext&#8217;. For the different patterns supported at design time, see https:\/\/go.microsoft.com\/fwlink\/?linkid=851728<\/strong><\/em><\/p><\/blockquote>\n<p>Bu hata, context nesnesini olu\u015fturacak tasar\u0131m\u0131n olmamas\u0131ndan kaynaklanmaktad\u0131r ve biz zaman\u0131nda bu hata \u00fczerine <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-core-class-libraryde-migration-islemleri\/\" rel=\"noopener noreferrer\" target=\"_blank\">\u015furadaki<\/a> makalemizde odaklanm\u0131\u015f ve \u00e7\u00f6z\u00fcm \u00fcretmi\u015f bulunmaktay\u0131z. \u00c7\u00f6z\u00fcm olarak ilgili makalede daha da detayl\u0131 irdelenmesine istinaden k\u0131saca DAL katman\u0131nda IDesignTimeDbContextFactory&lt;T&gt; tipinden t\u00fcreyen bir s\u0131n\u0131f\u0131n olu\u015fturulmas\u0131 gerekti\u011fini ve i\u00e7eri\u011fininde a\u015fa\u011f\u0131daki gibi geli\u015ftirildi\u011fini s\u00f6yleyebiliriz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-8.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"768\" height=\"252\" class=\"aligncenter size-full wp-image-12346\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-8.jpg 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-8-300x98.jpg 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/p>\n<p>Yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcne g\u00f6z atarsan\u0131z e\u011fer k\u0131rm\u0131z\u0131 ile vurgulanan alanda connection string de\u011ferini elde edebilmek maksad\u0131yla PL katman\u0131ndaki <em>appsettings.json<\/em> dosyas\u0131na eri\u015febilmek i\u00e7in u\u011fra\u015fmaktay\u0131z. Burada kullan\u0131lan <em>SetBasePath<\/em> ve <em>AddJsonFile<\/em> metotlar\u0131na eri\u015febilmek i\u00e7in &#8220;<a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Extensions.Configuration.Json\/3.1.0-preview1.19506.1\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.Extensions.Configuration.Json<\/a>&#8221; k\u00fct\u00fcphanesini DAL katman\u0131na y\u00fcklemeniz gerekmektedir.<\/p>\n<p>T\u00fcm bu i\u015flemlerin neticesinde powershell \u00fczerinden migrationlar\u0131 generate edebilmekte ve t\u00fcm yap\u0131lanmay\u0131 sql sunucusuna fiziksel olarak yans\u0131tabilmekteyiz(update).<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-9.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-9.jpg\" alt=\"Asp.NET Core 3.0 - \u00c7ok Katmanl\u0131 Mimaride Migration \u0130\u015flemleri\" width=\"712\" height=\"57\" class=\"aligncenter size-full wp-image-12353\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-9.jpg 712w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/10\/Asp.NET-Core-3.0-\u00c7ok-Katmanl\u0131-Mimaride-Migration-\u0130\u015flemleri-9-300x24.jpg 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/a><\/p>\n<p>B\u00f6ylece Asp.NET Core 3.0 \u00e7ok katmanl\u0131 mimari \u00e7ekirde\u011finde geli\u015ftirilen bir uygulamada migration yap\u0131lanmas\u0131n\u0131n nas\u0131l ve nelere dikkat edilerek yap\u0131lmas\u0131 gerekti\u011fi konusunda uzun ve detayl\u0131ca irdelemede bulunmu\u015f oluyoruz. Son olarak hangi katmanda hangi k\u00fct\u00fcphanenin olmas\u0131 gerekti\u011fine dair \u00f6zet bilgiyi verdikten sonra makalemizi noktayabiliriz.<\/p>\n<table>\n<thead>\n<tr>\n<th>DAL<\/th>\n<th>PL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<ul>\n<li>Microsoft.EntityFrameworkCore<\/li>\n<li>Microsoft.EntityFrameworkCore.Design<\/li>\n<li>Microsoft.EntityFrameworkCore.SqlServer<\/li>\n<li>Microsoft.Extensions.Configuration.Json<\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li>Microsoft.EntityFrameworkCore.SqlServer<\/li>\n<li>Microsoft.EntityFrameworkCore.Tools<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#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, Bu i\u00e7eri\u011fimizde \u00e7ok katmanl\u0131 mimari yap\u0131lanmas\u0131n\u0131n kullan\u0131ld\u0131\u011f\u0131 Asp.NET Core 3.0 uygulamalar\u0131nda migration i\u015flemlerinin nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini inceleyece\u011fiz. Her\u015feyden \u00f6nce ilk olarak \u00f6rnek bir Asp.NET Core 3.0 uygulamas\u0131 a\u00e7\u0131yoruz. Bu uygulama bizim sunum katman\u0131m\u0131z(PL &#8211;&#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":12369,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2898],"tags":[3048,3038,3039,3040,3041,148,3042,3046,3043,3045,3044,149,3036,3037,3047],"class_list":["post-12285","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core-3-0","tag-addjsonfile","tag-asp-net-core-cok-katmanli-mimari","tag-asp-net-core-n-tier-architecture","tag-bl","tag-busines-layer","tag-cok-katmanli-mimari","tag-dal-data-access-layer","tag-microsoft-entityframeworkcore-design","tag-microsoft-entityframeworkcore-sqlserver","tag-microsoft-entityframeworkcore-tools","tag-microsoft-extensions-configuration-json","tag-n-tier-architecture","tag-pl","tag-presentation-layer","tag-setbasepath"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/12285","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=12285"}],"version-history":[{"count":69,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/12285\/revisions"}],"predecessor-version":[{"id":12370,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/12285\/revisions\/12370"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/12369"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=12285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=12285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=12285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}