﻿
{"id":3837,"date":"2016-04-02T16:27:38","date_gmt":"2016-04-02T16:27:38","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3837"},"modified":"2016-04-02T16:27:39","modified_gmt":"2016-04-02T16:27:39","slug":"entity-framework-code-first-ile-stored-procedure-olusturma","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/","title":{"rendered":"Entity Framework &#8211; Code First \u0130le Stored Procedure Olu\u015fturma"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Hangi mimaride in\u015fa s\u00fcrecine girersek girelim, hangi yakla\u015f\u0131m yahut prensip \u00e7er\u00e7evesini kendimize \u00e7izgi olarak belirlersek belirleyelim, hi\u00e7 \u015f\u00fcphesiz mevzu bahis veritaban\u0131na geldimi Stored Procedurs\u00fcz bir veritaban\u0131 tasar\u0131m\u0131 s\u00f6z konusu olamamakta, bu lezzet ve performanstan \u00e7al\u0131\u015fmam\u0131z\u0131 mahrum b\u0131rakamamaktay\u0131z. Yani en az\u0131ndan \u015fahsen ben b\u00f6yle d\u00fc\u015f\u00fcn\u00fcyorum \ud83d\ude42 Hal b\u00f6yleyken Entity Framework mimarisinde Code First yakla\u015f\u0131m\u0131nda Stored Procedure olu\u015fturmay\u0131 ve kullanmay\u0131 ele alal\u0131m diyorum. Hadi ba\u015flayal\u0131m.<\/p>\n<blockquote><p>Yaz\u0131m\u0131za ba\u015flamadan i\u00e7erikle ilgili bir ka\u00e7 \u00f6ncelikten bahsetmek istiyorum. \u0130lgili konuyu \u00f6rneklendirirken EF &#8211; Code First \u00e7at\u0131s\u0131nda bir proje \u00f6rneklendirmesi yap\u0131lacakt\u0131r. Haliyle bu \u00f6rneklendirmede gerekli tablo s\u0131n\u0131flar\u0131n\u0131, Context s\u0131n\u0131f\u0131m\u0131z\u0131 ve Generate s\u00fcrecinde yap\u0131lacak i\u015flemleri bildi\u011finizi varsay\u0131yor ve i\u00e7erikte bu i\u015flemlerin yap\u0131ld\u0131\u011f\u0131 varsay\u0131larak \u00f6rneklendirmeye konuyla ilgili noktadan ba\u015flanaca\u011f\u0131n\u0131 belirtiyorum.<\/p>\n<p>E\u011fer bu konular hakk\u0131nda bilginiz yok veyahut tekrardan hat\u0131rlamak istiyorsan\u0131z \u00f6ncelikle makalemizi temellendirece\u011fimiz <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> ve <a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-migrations-islemleri\/\" target=\"_blank\">Entity Framework \u2013 Code First Migrations \u0130\u015flemleri<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131lar ba\u015fta olmak \u00fczere Entity Framework ve Code First \u00fczerine olan <a href=\"http:\/\/www.gencayyildiz.com\/blog\/category\/entity-framework\/\" target=\"_blank\">\u00f6nceki yaz\u0131lar\u0131ma<\/a> g\u00f6z atman\u0131z\u0131 tavsiye ediyorum.<\/p><\/blockquote>\n<h2>EF Code First &#8211; Stored Procedure Olu\u015fturma<\/h2>\n<p>EF Code First yap\u0131s\u0131 \u00fczerinde Stored Procedure olu\u015fturabilmek i\u00e7in iki farkl\u0131 tekni\u011fi inceleyece\u011fiz.<\/p>\n<p>Bu tekniklerden biri tabloya \u00f6zel Insert, Update ve Delete sorgular\u0131n\u0131 bar\u0131nd\u0131ran Stored Procedure yap\u0131lar\u0131 olu\u015fturmayken, bir di\u011feri ise T-SQL komutlar\u0131yla Stored Procedure olarak Generate edece\u011fimiz y\u00f6ntemdir.<\/p>\n<h3>Tabloya \u00d6zel Insert, Update ve Delete Sorgular\u0131n\u0131 Bar\u0131nd\u0131ran Stored Procedure<\/h3>\n<p>Stored Procedure&#8217;\u00fc olu\u015ftururken Context s\u0131n\u0131f\u0131m\u0131z\u0131n &#8220;OnModelCreating&#8221; metodunda override ederek \u00e7al\u0131\u015faca\u011f\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        protected override void OnModelCreating(DbModelBuilder modelBuilder)\r\n        {\r\n            modelBuilder.Entity&lt;Ogrenci&gt;().MapToStoredProcedures();\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki \u00f6rnek kod blo\u011funu incelerseniz e\u011fer ilgili tablo entitysi \u00fczerinden &#8220;MapToStoredProcedures&#8221; metodunu \u00e7a\u011f\u0131rarak, o tabloya \u00f6zel &#8220;Delete&#8221;, &#8220;Insert&#8221; ve &#8220;Update&#8221; Stored Procedure&#8217;lerini olu\u015fturmu\u015f oluyoruz.<\/p>\n<p>Generate i\u015fleminden sonra veritaban\u0131m\u0131z\u0131 incelersek e\u011fer;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi-2\/\" rel=\"attachment wp-att-3844\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3844\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-1.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"234\" height=\"117\" \/><\/a><br \/>\ng\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi yukar\u0131da bahsetti\u011fim sorgulara \u00f6zel SP&#8217;ler olu\u015fturulmu\u015ftur.<br \/>\nTabi bu SP&#8217;lerin i\u00e7eriklerine bakarsak e\u011fer,<\/p>\n<table style=\"width: 100%;\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-2.png\" rel=\"attachment wp-att-3845\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3845 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-2.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"309\" height=\"235\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-2.png 309w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-2-300x228.png 300w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/a><\/td>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-3.png\" rel=\"attachment wp-att-3846\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3846 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-3.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"451\" height=\"405\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-3.png 451w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-3-300x269.png 300w\" sizes=\"auto, (max-width: 451px) 100vw, 451px\" \/><\/a><\/td>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-4.png\" rel=\"attachment wp-att-3847\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3847 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-4.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"503\" height=\"298\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-4.png 503w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-4-300x178.png 300w\" sizes=\"auto, (max-width: 503px) 100vw, 503px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td>Delete<\/td>\n<td>Insert<\/td>\n<td>Update<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;Insert&#8221;, &#8220;Delete&#8221; ve &#8220;Update&#8221; sorgular\u0131na \u00f6zel SP&#8217;lerimizi bu \u015fekilde olu\u015fturabiliyoruz.<\/p>\n<p>&#8220;Peki! Bu SPlerin isimleri niye \u00f6yle hoca la?&#8221; diye sorarsan\u0131z e\u011fer otomatik olu\u015fturdu\u011fumuzdan dolay\u0131 olsa gerek. Kendisi SP&#8217;nin i\u00e7eri\u011fine g\u00f6re anlaml\u0131 bir isim set etmektedir. <\/p>\n<p>E\u011fer ki, olu\u015fturulacak SP&#8217;nin ismine m\u00fcdahale etmek istiyorsan\u0131z, a\u015fa\u011f\u0131daki gibi i\u015flem yapman\u0131z gerekecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi\/\" rel=\"attachment wp-att-3843\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3843\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"554\" height=\"151\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131.png 554w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-300x82.png 300w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;modelBuilder&#8221; parametresi ile \u00f6rnekte &#8220;Ogrenci&#8221; tablosuna \u00f6zel &#8220;MapToStoredProcedures&#8221; metoduyla bir sakl\u0131 yordam olu\u015fturulmaya yeltenilirken olu\u015fum s\u00fcrecinde metodun istedi\u011fi parametreye verilen lambda ifadesi kar\u015f\u0131m\u0131za yukar\u0131daki &#8220;Delete&#8221;, &#8220;Insert&#8221; ve &#8220;Update&#8221; metodlar\u0131n\u0131 getirdi\u011fini g\u00f6rmenizi istedim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        protected override void OnModelCreating(DbModelBuilder modelBuilder)\r\n        {\r\n            modelBuilder.Entity&lt;Ogrenci&gt;().MapToStoredProcedures(\r\n                o =&gt; o\r\n                .Insert(i =&gt; i.HasName(&quot;sp_OgrenciEkle&quot;))\r\n                .Update(u =&gt; u.HasName(&quot;sp_OgrenciGuncelle&quot;))\r\n                .Delete(d =&gt; d.HasName(&quot;sp_OgrenciSil&quot;))\r\n                );\r\n        }\r\n<\/pre>\n<p>E\u011fer yukar\u0131daki kod blo\u011funda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, ilgili sorgulara \u00f6zel i\u015flem ger\u00e7ekle\u015ftireceksek, &#8220;HasName&#8221; metodu ile olu\u015fturulacak SP&#8217;nin isminide belirleyebilmekteyiz.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi-6\/\" rel=\"attachment wp-att-3858\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-5.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"226\" height=\"117\" class=\"aligncenter size-full wp-image-3858\" \/><\/a><\/p>\n<p><strong>Peki daha fazla ne yapabiliriz?<\/strong><br \/>\nTabi ki de daha fazlas\u0131n\u0131&#8230;<br \/>\nMesela \u015fu ana kadar olu\u015fturdu\u011fumuz SP&#8217;ler varsay\u0131lan olarak belirli kal\u0131plarda olu\u015fturulmu\u015flard\u0131r. Yani, Insert sorgusu; t\u00fcm kolonlara de\u011fer almaktayken, Update sorgusu; OgrenciID&#8217;ye g\u00f6re t\u00fcm kolonlar\u0131 g\u00fcncellemekte, Delete sorgusu ise; OgrenciID&#8217;ye g\u00f6re veriyi silmektedir.<\/p>\n<p>Yani bir tabloya \u00f6zel SP&#8217;nin \u00e7al\u0131\u015faca\u011f\u0131 en geni\u015f \u00e7er\u00e7evede olu\u015fturulmaktad\u0131r. \u0130\u015fte biz bu \u00e7er\u00e7eveyi a\u015fabilmekte ve istedi\u011fimiz i\u015fleyi\u015fte &#8220;Insert&#8221;, &#8220;Update&#8221; ve &#8220;Delete&#8221; sorgular\u0131 olu\u015fturabilmekteyiz. Tabi bunu yapabilmek i\u00e7in 2. olu\u015fturma tekni\u011fini g\u00f6sterece\u011fim.<\/p>\n<p>\u015eimdi a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        protected override void OnModelCreating(DbModelBuilder modelBuilder)\r\n        {\r\n            modelBuilder.Entity&lt;Ogrenci&gt;().MapToStoredProcedures(\r\n                o =&gt; o\r\n                .Insert(i =&gt; i.HasName(&quot;sp_OgrenciEkle&quot;)\r\n                              .Parameter(p =&gt; p.Adi, &quot;adi&quot;)\r\n                              .Parameter(p =&gt; p.SoyAdi, &quot;soyadi&quot;))\r\n                );\r\n        }\r\n<\/pre>\n<p>Kod blo\u011funda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi sadece &#8220;Insert&#8221; sorgusuna \u00f6zel bir \u00f6rneklendirme yap\u0131lm\u0131\u015ft\u0131r. Dikkat ederseniz e\u011fer, &#8220;sp_OgrenciEkle&#8221; isminde olu\u015fturulacak SP&#8217;nin sadece &#8220;Adi&#8221; ve &#8220;SoyAdi&#8221; kolonlar\u0131n\u0131n parametre isimleri de\u011fi\u015ftirilmi\u015f ve bu parametrelere isim olarak s\u0131ras\u0131yla &#8220;adi&#8221; ve &#8220;soyadi&#8221; de\u011ferleri verilmi\u015ftir. Ayn\u0131 mant\u0131kla di\u011fer sorgulara \u00f6zel SP&#8217;lerde de bu parametre de\u011ferlerine m\u00fcdahale edilebilmektedir.<\/p>\n<p>\u015eimdi Stored Procedure olu\u015fturman\u0131n daha esnek ve daha hakim 2. olu\u015fturma y\u00f6ntemini inceleyelim.<\/p>\n<h3>T-SQL Komutlar\u0131yla Stored Procedure Olu\u015fturma<\/h3>\n<p>Bu y\u00f6ntemi uygulayabilmemiz i\u00e7in projemizde migrasyonlar\u0131 aktifle\u015ftirmemiz gerekmektedir. Bu i\u015flem i\u00e7in, yukar\u0131 sat\u0131rlarda vermi\u015f oldu\u011fum <a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-migrations-islemleri\/\" target=\"_blank\">Entity Framework \u2013 Code First Migrations \u0130\u015flemleri<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131y\u0131 inceleyebilirsiniz. <\/p>\n<p>Dikkat ederseniz 1. y\u00f6ntemde &#8220;Select&#8221; sorgusu \u00fczerine bir SP&#8217;den bahsetmedim. \u00c7\u00fcnk\u00fc o y\u00f6ntemde Select&#8217;e \u00f6zel bir Generate bulunmamaktad\u0131r. Lakin bu 2. y\u00f6ntemde b\u0131rak\u0131n Select komutuna \u00f6zel SP&#8217;yi, i\u00e7erisinde her t\u00fcrl\u00fc algoritmik mant\u0131\u011f\u0131 bar\u0131nd\u0131ran ve de\u011fi\u015fkenler tutan bir SP olu\u015fturabileceksiniz.<\/p>\n<p>\u00d6ncelikle migrasyonlar\u0131 aktifle\u015ftirip ekledikten sonra &#8220;Package Manager Console&#8221; penceresinde &#8220;Add-Migration SPEkleyici&#8221; komutunu \u00e7al\u0131\u015ft\u0131rarak SPEkleyici isiminde bir migrasyon ekleyiniz.(<em>Tabi buradaki ismi siz istedi\u011finiz gibi belirleyebilirsiniz<\/em>)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public partial class SPEkleyici : DbMigration\r\n    {\r\n        public override void Up()\r\n        {\r\n            CreateStoredProcedure(\r\n                &quot;dbo.OrnekSP&quot;,\r\n                p =&gt; new\r\n                    {\r\n\r\n                    },\r\n                body:\r\n                    @&quot;Select * from Ogrenciler&quot;\r\n            );\r\n            \r\n        }\r\n        \r\n        public override void Down()\r\n        {\r\n            DropStoredProcedure(&quot;dbo.OrnekSP&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8220;Up&#8221; metodu i\u00e7erisinde \u00e7a\u011fr\u0131lm\u0131\u015f olan &#8220;CreateStoredProcedure&#8221; isimli metod sayesinde veritaban\u0131m\u0131za bir Stored Procedure olu\u015fturabiliyoruz. \u0130lgili metodun 1. parametresi SP&#8217;nin ismini, 2. parametresi SP&#8217;nin varsa parametrelerini ve 3. parametresi ise SP&#8217;nin sorgusunu almaktad\u0131r.<\/p>\n<p>Bu \u015fekilde Generate edildiyse e\u011fer a\u015fa\u011f\u0131daki gibi SP olu\u015facakt\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi-7\/\" rel=\"attachment wp-att-3863\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-6.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"203\" height=\"85\" class=\"aligncenter size-full wp-image-3863\" \/><\/a><br \/>\nAyriyetten i\u00e7eri\u011fine bakarsak;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi-8\/\" rel=\"attachment wp-att-3864\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-7.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"264\" height=\"212\" class=\"aligncenter size-full wp-image-3864\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi sade, parametresiz bir SP olu\u015fturulmu\u015ftur.<\/p>\n<p><strong>Peki parametreli nas\u0131l olu\u015fturaca\u011f\u0131z?<\/strong><br \/>\n\u0130\u015fte b\u00f6yle,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            CreateStoredProcedure(\r\n             &quot;dbo.OrnekSP&quot;,\r\n             p =&gt; new\r\n             {\r\n                 Adi = p.String(),\r\n                 SoyAdi = p.String(),\r\n                 Memleketi = p.String(),\r\n                 OgrenciID = p.Int(),\r\n             },\r\n             body:\r\n                 @&quot;\r\n                  if(exists(Select * from Ogrenciler where OgrenciID = @OgrenciID))\r\n                      begin\r\n                          Update Ogrenciler Set Adi = @Adi, SoyAdi = @SoyAdi, Memleketi = @Memleketi where OgrenciID =     @OgrenciID\r\n                      end\r\n                  else\r\n                      begin\r\n                          Insert Ogrenciler(Adi, SoyAdi, Memleketi) Values(@Adi, @SoyAdi, @Memleketi)\r\n                      end    \r\n                  &quot;\r\n                                 );\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi 2. parametrede belirtti\u011fimiz ifadeler bir parametre \u00f6zelli\u011fi sergileyecektirler ve o ifadelere kar\u015f\u0131l\u0131k gelen T-SQL parametre de\u011ferlerini body i\u00e7erisindeki sorguda kullanmaktay\u0131z.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-first-ile-stored-procedure-olusturma\/entity-framework-code-first-ile-stored-procedure-olusturma-ve-kullanimi-9\/\" rel=\"attachment wp-att-3866\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-8.png\" alt=\"Entity Framework - Code First \u0130le Stored Procedure Olu\u015fturma ve Kullan\u0131m\u0131\" width=\"789\" height=\"406\" class=\"aligncenter size-full wp-image-3866\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-8.png 789w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-8-300x154.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/04\/Entity-Framework-Code-First-\u0130le-Stored-Procedure-Olu\u015fturma-ve-Kullan\u0131m\u0131-8-768x395.png 768w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/a><br \/>\nBak\u0131n; istedi\u011fim tarzda bir SP olu\u015fturmu\u015f oldum.<\/p>\n<p>Evet&#8230;<br \/>\nEF Code First ile Stored Procedure nas\u0131l olu\u015fturuluyor iki farkl\u0131 y\u00f6ntemle detayl\u0131ca incelemi\u015f olduk. Asl\u0131nda bu yaz\u0131mda SP olu\u015fturman\u0131n yan\u0131nda kullan\u0131m\u0131na da de\u011finmek istiyordum ama teferruatl\u0131ca ele al\u0131nca i\u00e7eri\u011fin haddinden fazla \u015fi\u015fece\u011fini d\u00fc\u015f\u00fcnd\u00fcm. O y\u00fczden bir sonraki yaz\u0131m muhtemelen &#8216;Entity Framework &#8211; Code First \u0130le Stored Procedure Kullan\u0131m\u0131&#8217; ba\u015fl\u0131kl\u0131 olacakt\u0131r.<\/p>\n<p>Okudu\u011funuz i\u00e7in te\u015fekk\u00fcr ederim.<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\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, Hangi mimaride in\u015fa s\u00fcrecine girersek girelim, hangi yakla\u015f\u0131m yahut prensip \u00e7er\u00e7evesini kendimize \u00e7izgi olarak belirlersek belirleyelim, hi\u00e7 \u015f\u00fcphesiz mevzu bahis veritaban\u0131na geldimi Stored Procedurs\u00fcz bir veritaban\u0131 tasar\u0131m\u0131 s\u00f6z konusu olamamakta, bu lezzet ve&#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":[952,1003,1008,991,1004,963,1006,1005,977,974,124,1007],"class_list":["post-3837","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-entity-framework","tag-code-first","tag-code-first-stored-procedure","tag-createstoredprocedure","tag-ef-code-first","tag-ef-stored-procedure","tag-entity-framework","tag-hasname","tag-maptostoredprocedures","tag-modelbuilder","tag-onmodelcreating","tag-stored-procedure","tag-up"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3837","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=3837"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3837\/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=3837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}