[{"data":1,"prerenderedAt":1086},["ShallowReactive",2],{"navigation":3,"categories":339,"/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11":577},[4,173,210,235],{"title":5,"path":6,"stem":7,"children":8,"page":102},"Dersler","/dersler","dersler",[9,103,116,137,146,155,164],{"title":10,"path":11,"stem":12,"children":13,"page":102},"Asp.Net Mvc","/dersler/asp-net-mvc","dersler/asp-net-mvc",[14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98],{"title":15,"path":16,"stem":17},"Asp.Net Mvc – Ajax ile Üye Girişi – Üyelik Sistemi 2 (Asp.Net Mvc Yazı Dizisi – 21)","/dersler/asp-net-mvc/asp-net-mvc-ajax-ile-uye-girisi-uyelik-sistemi-2-asp-net-mvc-yazi-dizisi-21","dersler/asp-net-mvc/asp-net-mvc-ajax-ile-uye-girisi-uyelik-sistemi-2-asp-net-mvc-yazi-dizisi-21",{"title":19,"path":20,"stem":21},"Asp.Net Mvc - Code First ile Veritabanı İşlemleri 2 (Asp.Net Mvc Yazı Dizisi – 12)","/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-2-asp-net-mvc-yazi-dizisi-12","dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-2-asp-net-mvc-yazi-dizisi-12",{"title":23,"path":24,"stem":25},"Asp.Net Mvc - Code First ile Veritabanı İşlemleri 1 - Proje Başlangıcı (Asp.Net Mvc Yazı Dizisi – 11)","/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11","dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11",{"title":27,"path":28,"stem":29},"Asp.Net Mvc - Controller ve View İşlemleri 1 (Asp.Net Mvc Yazı Dizisi – 13)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-1-asp-net-mvc-yazi-dizisi-13","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-1-asp-net-mvc-yazi-dizisi-13",{"title":31,"path":32,"stem":33},"Asp.Net Mvc - Controller ve View İşlemleri 2 (Asp.Net Mvc Yazı Dizisi – 14)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-2-asp-net-mvc-yazi-dizisi-14","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-2-asp-net-mvc-yazi-dizisi-14",{"title":35,"path":36,"stem":37},"Asp.Net Mvc – Controller ve View İşlemleri 3 (Asp.Net Mvc Yazı Dizisi – 15)","/dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-3-asp-net-mvc-yazi-dizisi-15","dersler/asp-net-mvc/asp-net-mvc-controller-ve-view-islemleri-3-asp-net-mvc-yazi-dizisi-15",{"title":39,"path":40,"stem":41},"Asp.Net Mvc – Html Helper'ler (Asp.Net Mvc Yazı Dizisi – 16)","/dersler/asp-net-mvc/asp-net-mvc-html-helperler-asp-net-mvc-yazi-dizisi-16","dersler/asp-net-mvc/asp-net-mvc-html-helperler-asp-net-mvc-yazi-dizisi-16",{"title":43,"path":44,"stem":45},"Asp.Net Mvc – Html Helper'lerin For Takılı Kullanım Örnekleri 1 (Asp.Net Mvc Yazı Dizisi – 18)","/dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-1-asp-net-mvc-yazi-dizisi-18","dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-1-asp-net-mvc-yazi-dizisi-18",{"title":47,"path":48,"stem":49},"Asp.Net Mvc – Html Helper'lerin For Takılı Kullanım Örnekleri 2 (Asp.Net Mvc Yazı Dizisi – 19)","/dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-2-asp-net-mvc-yazi-dizisi-19","dersler/asp-net-mvc/asp-net-mvc-html-helperlerin-for-takili-kullanim-ornekleri-2-asp-net-mvc-yazi-dizisi-19",{"title":51,"path":52,"stem":53},"Asp.Net Mvc Layout Sayfaları (Asp.Net Mvc Yazı Dizisi – 4)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-asp-net-mvc-yazi-dizisi-4","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-asp-net-mvc-yazi-dizisi-4",{"title":55,"path":56,"stem":57},"Asp.Net Mvc Layout Sayfaları - Partial View (Asp.Net Mvc Yazı Dizisi – 7)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-partial-view-asp-net-mvc-yazi-dizisi-7","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-partial-view-asp-net-mvc-yazi-dizisi-7",{"title":59,"path":60,"stem":61},"Asp.Net Mvc Layout Sayfaları - Render Page (Asp.Net Mvc Yazı Dizisi – 6)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-page-asp-net-mvc-yazi-dizisi-6","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-page-asp-net-mvc-yazi-dizisi-6",{"title":63,"path":64,"stem":65},"Asp.Net Mvc Layout Sayfaları - Render Section (Asp.Net Mvc Yazı Dizisi – 5)","/dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-section-asp-net-mvc-yazi-dizisi-5","dersler/asp-net-mvc/asp-net-mvc-layout-sayfalari-render-section-asp-net-mvc-yazi-dizisi-5",{"title":67,"path":68,"stem":69},"Asp.Net Mvc Nedir? (Asp.Net Mvc Yazı Dizisi - 1)","/dersler/asp-net-mvc/asp-net-mvc-nedir-asp-net-mvc-yazi-dizisi-1","dersler/asp-net-mvc/asp-net-mvc-nedir-asp-net-mvc-yazi-dizisi-1",{"title":71,"path":72,"stem":73},"Asp.Net Mvc Razor View Engine Bölüm 1 (Asp.Net Mvc Yazı Dizisi – 8)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-1-asp-net-mvc-yazi-dizisi-8","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-1-asp-net-mvc-yazi-dizisi-8",{"title":75,"path":76,"stem":77},"Asp.Net Mvc Razor View Engine Bölüm 2 (Asp.Net Mvc Yazı Dizisi – 9)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-2-asp-net-mvc-yazi-dizisi-9","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-2-asp-net-mvc-yazi-dizisi-9",{"title":79,"path":80,"stem":81},"Asp.Net Mvc Razor View Engine Bölüm 3 (Asp.Net Mvc Yazı Dizisi – 10)","/dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-3-asp-net-mvc-yazi-dizisi-10","dersler/asp-net-mvc/asp-net-mvc-razor-view-engine-bolum-3-asp-net-mvc-yazi-dizisi-10",{"title":83,"path":84,"stem":85},"Asp.Net Mvc Routing Mekanizması ve Mvc 5 ile Gelen Yenilikler","/dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler","dersler/asp-net-mvc/asp-net-mvc-routing-mekanizmasi-ve-mvc-5-ile-gelen-yenilikler",{"title":87,"path":88,"stem":89},"Asp.Net Mvc – Web Helper'ler (Asp.Net Mvc Yazı Dizisi – 17)","/dersler/asp-net-mvc/asp-net-mvc-web-helperler-asp-net-mvc-yazi-dizisi-17","dersler/asp-net-mvc/asp-net-mvc-web-helperler-asp-net-mvc-yazi-dizisi-17",{"title":91,"path":92,"stem":93},"Asp.Net Mvc – Yeni Üye Kaydı ve Dosya Yükleme - Üyelik Sistemi 1 (Asp.Net Mvc Yazı Dizisi – 20)","/dersler/asp-net-mvc/asp-net-mvc-yeni-uye-kaydi-ve-dosya-yukleme-uyelik-sistemi-1-asp-net-mvc-yazi-dizisi-20","dersler/asp-net-mvc/asp-net-mvc-yeni-uye-kaydi-ve-dosya-yukleme-uyelik-sistemi-1-asp-net-mvc-yazi-dizisi-20",{"title":95,"path":96,"stem":97},"Asp.Net Mvc'nin Avantajları (Asp.Net Mvc Yazı Dizisi – 2)","/dersler/asp-net-mvc/asp-net-mvcnin-avantajlari-asp-net-mvc-yazi-dizisi-2","dersler/asp-net-mvc/asp-net-mvcnin-avantajlari-asp-net-mvc-yazi-dizisi-2",{"title":99,"path":100,"stem":101},"İlk Asp.Net Mvc Projesinin Oluşturulması (Asp.Net Mvc Yazı Dizisi – 3)","/dersler/asp-net-mvc/ilk-asp-net-mvc-projesinin-olusturulmasi-asp-net-mvc-yazi-dizisi-3","dersler/asp-net-mvc/ilk-asp-net-mvc-projesinin-olusturulmasi-asp-net-mvc-yazi-dizisi-3",false,{"title":104,"path":105,"stem":106,"children":107,"page":102},"Javascript","/dersler/javascript","dersler/javascript",[108,112],{"title":109,"path":110,"stem":111},"Jquery'den Yalın Javascript (Vanilla Js)'e Geçiş","/dersler/javascript/jqueryden-yalin-javascript-vanilla-jse-gecis","dersler/javascript/jqueryden-yalin-javascript-vanilla-jse-gecis",{"title":113,"path":114,"stem":115},"Object Oriented (Nesne Yönelimli) Javascript Programlama","/dersler/javascript/object-oriented-nesne-yonelimli-javascript-programlama","dersler/javascript/object-oriented-nesne-yonelimli-javascript-programlama",{"title":117,"path":118,"stem":119,"children":120,"page":102},"Orchard Cms","/dersler/orchard-cms","dersler/orchard-cms",[121,125,129,133],{"title":122,"path":123,"stem":124},"Orchard Project Nedir? (Orchard Cms Seri - 1)","/dersler/orchard-cms/orchard-project-nedir-orchard-cms-seri-1","dersler/orchard-cms/orchard-project-nedir-orchard-cms-seri-1",{"title":126,"path":127,"stem":128},"Orchard – Visual Studio ile Kurulumu? (Orchard Cms Seri – 3)","/dersler/orchard-cms/orchard-visual-studio-ile-kurulumu-orchard-cms-seri-3","dersler/orchard-cms/orchard-visual-studio-ile-kurulumu-orchard-cms-seri-3",{"title":130,"path":131,"stem":132},"Orchard - Web Matrix ile Kurulumu? (Orchard Cms Seri – 2)","/dersler/orchard-cms/orchard-web-matrix-kurulumu-orchard-cms-seri-2","dersler/orchard-cms/orchard-web-matrix-kurulumu-orchard-cms-seri-2",{"title":134,"path":135,"stem":136},"Orchard'ı Türkçeleştirme (Türkçe Dil Dosyaları Mevcut)","/dersler/orchard-cms/orchardi-turkcelestirme-turkce-dil-dosyalari","dersler/orchard-cms/orchardi-turkcelestirme-turkce-dil-dosyalari",{"title":138,"path":139,"stem":140,"children":141,"page":102},"RequireJs","/dersler/requirejs","dersler/requirejs",[142],{"title":143,"path":144,"stem":145},"RequireJs Nedir? (RequireJs ile Modüler JavaScript Programlama)","/dersler/requirejs/requirejs-nedir-requirejs-ile-moduler-javascript-programlama-1","dersler/requirejs/requirejs-nedir-requirejs-ile-moduler-javascript-programlama-1",{"title":147,"path":148,"stem":149,"children":150,"page":102},"Three.js ile WebGL","/dersler/three-js-ile-webgl","dersler/three-js-ile-webgl",[151],{"title":152,"path":153,"stem":154},"WebGL Nedir? (Three.js ile WebGL)","/dersler/three-js-ile-webgl/webgl-nedir-three-js-ile-webgl-1","dersler/three-js-ile-webgl/webgl-nedir-three-js-ile-webgl-1",{"title":156,"path":157,"stem":158,"children":159,"page":102},"Vue.js","/dersler/vue-js","dersler/vue-js",[160],{"title":161,"path":162,"stem":163},"Vue.js Nedir?","/dersler/vue-js/vue-js-nedir","dersler/vue-js/vue-js-nedir",{"title":165,"path":166,"stem":167,"children":168,"page":102},"Yazılım Mimarisi","/dersler/yazilim-mimarisi","dersler/yazilim-mimarisi",[169],{"title":170,"path":171,"stem":172},"Kurumsal Web Uygulamaları Geliştirme","/dersler/yazilim-mimarisi/kurumsal-web-uygulamalari-gelistirme","dersler/yazilim-mimarisi/kurumsal-web-uygulamalari-gelistirme",{"title":174,"path":175,"stem":176,"children":177,"page":102},"Duyurular","/duyurular","duyurular",[178,182,186,190,194,198,202,206],{"title":179,"path":180,"stem":181},"Asp.Net vNext ve Visual Studio 14","/duyurular/asp-net-vnext-ve-visual-studio-14","duyurular/asp-net-vnext-ve-visual-studio-14",{"title":183,"path":184,"stem":185},"Nop Commerce 3.20 Sürümü Çıktı","/duyurular/nop-commerce-3-20-surumu-cikti","duyurular/nop-commerce-3-20-surumu-cikti",{"title":187,"path":188,"stem":189},"Nop Commerce 3.30 Yenilikleri","/duyurular/nop-commerce-3-30-yenilikleri","duyurular/nop-commerce-3-30-yenilikleri",{"title":191,"path":192,"stem":193},"TypeScript Final Sürümüne Ulaştı","/duyurular/typescript-final-surumune-ulasti","duyurular/typescript-final-surumune-ulasti",{"title":195,"path":196,"stem":197},"Visual Studio 2013 Update 1 Final Çıktı","/duyurular/visual-studio-2013-update-1-final-cikti","duyurular/visual-studio-2013-update-1-final-cikti",{"title":199,"path":200,"stem":201},"Visual Studio 2013 Update 2 Final Çıktı","/duyurular/visual-studio-2013-update-2-final-cikti","duyurular/visual-studio-2013-update-2-final-cikti",{"title":203,"path":204,"stem":205},"Visual Studio 2013 Update 3 Final Çıktı","/duyurular/visual-studio-2013-update-3-final-cikti","duyurular/visual-studio-2013-update-3-final-cikti",{"title":207,"path":208,"stem":209},"Wordpress 3.8.1 Sürümü Çıktı","/duyurular/wordpress-3-8-1-surumu-cikti","duyurular/wordpress-3-8-1-surumu-cikti",{"title":211,"path":212,"stem":213,"children":214,"page":102},"Geliştirmelerim","/gelistirmelerim","gelistirmelerim",[215,219,223,227,231],{"title":216,"path":217,"stem":218},"ChatGPT Arayüz Projesi","/gelistirmelerim/chatgpt-arayuz","gelistirmelerim/chatgpt-arayuz",{"title":220,"path":221,"stem":222},"Orchard Bootstrap Eklentisi","/gelistirmelerim/orchard-bootstrap-eklentisi","gelistirmelerim/orchard-bootstrap-eklentisi",{"title":224,"path":225,"stem":226},"Orchard Localized Layer Eklentisi","/gelistirmelerim/orchard-localized-layer-eklentisi","gelistirmelerim/orchard-localized-layer-eklentisi",{"title":228,"path":229,"stem":230},"Orchard Responsive Flex Slider Eklentisi","/gelistirmelerim/orchard-responsive-flex-slider-eklentisi","gelistirmelerim/orchard-responsive-flex-slider-eklentisi",{"title":232,"path":233,"stem":234},"Vue.js Token Eklentisi","/gelistirmelerim/vue-js-token-eklentisi","gelistirmelerim/vue-js-token-eklentisi",{"title":236,"path":237,"stem":238,"children":239,"page":102},"İpuçları","/ipuclari","ipuclari",[240,249,258,266,275,284,292,309,317,330],{"title":241,"path":242,"stem":243,"children":244,"page":102},"Apache Cordova","/ipuclari/apache-cordova","ipuclari/apache-cordova",[245],{"title":246,"path":247,"stem":248},"Visual Studio'da Cordova Intellisense Aktif Etme","/ipuclari/apache-cordova/visual-studioda-cordova-intellisense-aktif-etme","ipuclari/apache-cordova/visual-studioda-cordova-intellisense-aktif-etme",{"title":250,"path":251,"stem":252,"children":253,"page":102},"Apache Server","/ipuclari/apache-server","ipuclari/apache-server",[254],{"title":255,"path":256,"stem":257},"Apache Sunucularda Açılış Sayfasını Değiştirmek","/ipuclari/apache-server/apache-sunucularda-acilis-sayfasini-degistirmek","ipuclari/apache-server/apache-sunucularda-acilis-sayfasini-degistirmek",{"title":10,"path":259,"stem":260,"children":261,"page":102},"/ipuclari/asp-net-mvc","ipuclari/asp-net-mvc",[262],{"title":263,"path":264,"stem":265},"Class Library Projelerine Razor Intellisense Desteği Eklemek","/ipuclari/asp-net-mvc/class-library-projelerine-razor-intellisense-destegi-eklemek","ipuclari/asp-net-mvc/class-library-projelerine-razor-intellisense-destegi-eklemek",{"title":267,"path":268,"stem":269,"children":270,"page":102},"Asp.Net Web Api","/ipuclari/asp-net-web-api","ipuclari/asp-net-web-api",[271],{"title":272,"path":273,"stem":274},"Asp.Net Web Api Dosya İndirme","/ipuclari/asp-net-web-api/asp-net-web-api-dosya-indirme","ipuclari/asp-net-web-api/asp-net-web-api-dosya-indirme",{"title":276,"path":277,"stem":278,"children":279,"page":102},"IIS","/ipuclari/iis","ipuclari/iis",[280],{"title":281,"path":282,"stem":283},"Visual Studio IIS Express Yüksek Cpu Kullanımı Sorunu","/ipuclari/iis/visual-studio-iis-express-yuksek-cpu-kullanimi-sorunu","ipuclari/iis/visual-studio-iis-express-yuksek-cpu-kullanimi-sorunu",{"title":104,"path":285,"stem":286,"children":287,"page":102},"/ipuclari/javascript","ipuclari/javascript",[288],{"title":289,"path":290,"stem":291},"Jquery width() - innerWidth() - outerWidth() Farkları","/ipuclari/javascript/jquery-width-innerwidth-outerwidth-farklari","ipuclari/javascript/jquery-width-innerwidth-outerwidth-farklari",{"title":293,"path":294,"stem":295,"children":296,"page":102},"Nop Commerce","/ipuclari/nop-commerce","ipuclari/nop-commerce",[297,301,305],{"title":298,"path":299,"stem":300},"Nop Commerce Eklentilerinde Kullanıcı Yetkilendirmesi","/ipuclari/nop-commerce/nop-commerce-eklenti-kullanici-yetkilendirmesi","ipuclari/nop-commerce/nop-commerce-eklenti-kullanici-yetkilendirmesi",{"title":302,"path":303,"stem":304},"Nop Commerce Eklenti Yazımında Intelli Sense Sorununu Düzeltme","/ipuclari/nop-commerce/nop-commerce-eklenti-yaziminda-intelli-sense-sorununu-duzeltme","ipuclari/nop-commerce/nop-commerce-eklenti-yaziminda-intelli-sense-sorununu-duzeltme",{"title":306,"path":307,"stem":308},"Nop Commerce Widget Konum Listesi","/ipuclari/nop-commerce/nop-commerce-widget-konum-listesi","ipuclari/nop-commerce/nop-commerce-widget-konum-listesi",{"title":117,"path":310,"stem":311,"children":312,"page":102},"/ipuclari/orchard-cms","ipuclari/orchard-cms",[313],{"title":314,"path":315,"stem":316},"Orchard 1.7.x Sürümlerinde Intellisense Hatasını Giderme","/ipuclari/orchard-cms/orchard-1-7-x-surumlerinde-intellisense-hatasini-giderme","ipuclari/orchard-cms/orchard-1-7-x-surumlerinde-intellisense-hatasini-giderme",{"title":318,"path":319,"stem":320,"children":321,"page":102},"Wordpress","/ipuclari/wordpress","ipuclari/wordpress",[322,326],{"title":323,"path":324,"stem":325},"Word Press Ftp Bilgisi Sormama Ayarı","/ipuclari/wordpress/word-press-ftp-bilgisi-sormama-ayari","ipuclari/wordpress/word-press-ftp-bilgisi-sormama-ayari",{"title":327,"path":328,"stem":329},"Wordpress Sidebar Meta - Wordpress.org Linkini Silme","/ipuclari/wordpress/wordpress-sidebar-meta-wordpress-org-linkini-silme","ipuclari/wordpress/wordpress-sidebar-meta-wordpress-org-linkini-silme",{"title":331,"path":332,"stem":333,"children":334,"page":102},"Xampp","/ipuclari/xampp","ipuclari/xampp",[335],{"title":336,"path":337,"stem":338},"Xampp Tüm Sürüm Listesi","/ipuclari/xampp/xampp-tum-surum-listesi","ipuclari/xampp/xampp-tum-surum-listesi",[340,357,368,379,390,401,412,423,434,445,456,467,478,489,500,511,522,533,544,555,566],{"id":341,"title":5,"body":342,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":351,"navigation":352,"path":353,"seo":354,"stem":355,"__hash__":356},"posts/dersler/.navigation.md",{"type":343,"value":344,"toc":345},"minimark",[],{"title":346,"searchDepth":347,"depth":347,"links":348},"",2,[],null,"md",{},true,"/dersler/.navigation",{"title":5,"description":346},"dersler/.navigation","Yo_9ZJtmvgLHf17cAHzvT06H3T1Ets_s-roHMTl3ZYI",{"id":358,"title":10,"body":359,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":363,"navigation":352,"path":364,"seo":365,"stem":366,"__hash__":367},"posts/dersler/asp-net-mvc/.navigation.md",{"type":343,"value":360,"toc":361},[],{"title":346,"searchDepth":347,"depth":347,"links":362},[],{},"/dersler/asp-net-mvc/.navigation",{"title":10,"description":346},"dersler/asp-net-mvc/.navigation","PTvSN66cD4508L31HdyDUIhOskLEnya90TKHQjGo994",{"id":369,"title":104,"body":370,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":374,"navigation":352,"path":375,"seo":376,"stem":377,"__hash__":378},"posts/dersler/javascript/.navigation.md",{"type":343,"value":371,"toc":372},[],{"title":346,"searchDepth":347,"depth":347,"links":373},[],{},"/dersler/javascript/.navigation",{"title":104,"description":346},"dersler/javascript/.navigation","bUttamdS6EWYvmoedNpErrdL_02OT9K6sHHmAD5kdXE",{"id":380,"title":117,"body":381,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":385,"navigation":352,"path":386,"seo":387,"stem":388,"__hash__":389},"posts/dersler/orchard-cms/.navigation.md",{"type":343,"value":382,"toc":383},[],{"title":346,"searchDepth":347,"depth":347,"links":384},[],{},"/dersler/orchard-cms/.navigation",{"title":117,"description":346},"dersler/orchard-cms/.navigation","vf9ZQxf2YUpNSH09JkDW8B80DJ8dutrwo13pM-L1naU",{"id":391,"title":138,"body":392,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":396,"navigation":352,"path":397,"seo":398,"stem":399,"__hash__":400},"posts/dersler/requirejs/.navigation.md",{"type":343,"value":393,"toc":394},[],{"title":346,"searchDepth":347,"depth":347,"links":395},[],{},"/dersler/requirejs/.navigation",{"title":138,"description":346},"dersler/requirejs/.navigation","3ee9nRLCD2baXpsVn9PyDaAus4--JiF-l-veIDcdruM",{"id":402,"title":147,"body":403,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":407,"navigation":352,"path":408,"seo":409,"stem":410,"__hash__":411},"posts/dersler/three-js-ile-webgl/.navigation.md",{"type":343,"value":404,"toc":405},[],{"title":346,"searchDepth":347,"depth":347,"links":406},[],{},"/dersler/three-js-ile-webgl/.navigation",{"title":147,"description":346},"dersler/three-js-ile-webgl/.navigation","nUfb_DUlupidc2LBy3L_59z47x2BhJi1-L6Ri78gMMI",{"id":413,"title":156,"body":414,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":418,"navigation":352,"path":419,"seo":420,"stem":421,"__hash__":422},"posts/dersler/vue-js/.navigation.md",{"type":343,"value":415,"toc":416},[],{"title":346,"searchDepth":347,"depth":347,"links":417},[],{},"/dersler/vue-js/.navigation",{"title":156,"description":346},"dersler/vue-js/.navigation","sM919oShzUaKXtAu2t6UxThzxjp88FIpEiCBtqjgMfM",{"id":424,"title":165,"body":425,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":429,"navigation":352,"path":430,"seo":431,"stem":432,"__hash__":433},"posts/dersler/yazilim-mimarisi/.navigation.md",{"type":343,"value":426,"toc":427},[],{"title":346,"searchDepth":347,"depth":347,"links":428},[],{},"/dersler/yazilim-mimarisi/.navigation",{"title":165,"description":346},"dersler/yazilim-mimarisi/.navigation","VaeC5tLP3Enl4njeu0Cen-C_KmQabvKhw7PxK_bMbAw",{"id":435,"title":174,"body":436,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":440,"navigation":352,"path":441,"seo":442,"stem":443,"__hash__":444},"posts/duyurular/.navigation.md",{"type":343,"value":437,"toc":438},[],{"title":346,"searchDepth":347,"depth":347,"links":439},[],{},"/duyurular/.navigation",{"title":174,"description":346},"duyurular/.navigation","4rzF9u-0UF1wDFh1PaKOGlrl47vkJ-eGm2YLWTQsWB8",{"id":446,"title":211,"body":447,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":451,"navigation":352,"path":452,"seo":453,"stem":454,"__hash__":455},"posts/gelistirmelerim/.navigation.md",{"type":343,"value":448,"toc":449},[],{"title":346,"searchDepth":347,"depth":347,"links":450},[],{},"/gelistirmelerim/.navigation",{"title":211,"description":346},"gelistirmelerim/.navigation","-rbnagzfm7EAv-3Wbx2RtTpnuOsf7PhFd1k8HWymFJs",{"id":457,"title":236,"body":458,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":462,"navigation":352,"path":463,"seo":464,"stem":465,"__hash__":466},"posts/ipuclari/.navigation.md",{"type":343,"value":459,"toc":460},[],{"title":346,"searchDepth":347,"depth":347,"links":461},[],{},"/ipuclari/.navigation",{"title":236,"description":346},"ipuclari/.navigation","zi0IIAkH6byWTX1v0PQqvoJGIN-QOgZPuFh46B3-Hbs",{"id":468,"title":241,"body":469,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":473,"navigation":352,"path":474,"seo":475,"stem":476,"__hash__":477},"posts/ipuclari/apache-cordova/.navigation.md",{"type":343,"value":470,"toc":471},[],{"title":346,"searchDepth":347,"depth":347,"links":472},[],{},"/ipuclari/apache-cordova/.navigation",{"title":241,"description":346},"ipuclari/apache-cordova/.navigation","XB8Y86jOhcbmfazjiAHT9ZBlLm-ELG_56cMZdlgVDeg",{"id":479,"title":250,"body":480,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":484,"navigation":352,"path":485,"seo":486,"stem":487,"__hash__":488},"posts/ipuclari/apache-server/.navigation.md",{"type":343,"value":481,"toc":482},[],{"title":346,"searchDepth":347,"depth":347,"links":483},[],{},"/ipuclari/apache-server/.navigation",{"title":250,"description":346},"ipuclari/apache-server/.navigation","nz2-tvhAoLZq5JoofxrB1Vce1Y0ZJxM5-aJy4UGGMBE",{"id":490,"title":10,"body":491,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":495,"navigation":352,"path":496,"seo":497,"stem":498,"__hash__":499},"posts/ipuclari/asp-net-mvc/.navigation.md",{"type":343,"value":492,"toc":493},[],{"title":346,"searchDepth":347,"depth":347,"links":494},[],{},"/ipuclari/asp-net-mvc/.navigation",{"title":10,"description":346},"ipuclari/asp-net-mvc/.navigation","yIDoFpgOrvcNkVOqKxihtoYUeqvtYWjqHMCSbvyyBM8",{"id":501,"title":267,"body":502,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":506,"navigation":352,"path":507,"seo":508,"stem":509,"__hash__":510},"posts/ipuclari/asp-net-web-api/.navigation.md",{"type":343,"value":503,"toc":504},[],{"title":346,"searchDepth":347,"depth":347,"links":505},[],{},"/ipuclari/asp-net-web-api/.navigation",{"title":267,"description":346},"ipuclari/asp-net-web-api/.navigation","lAXXpFakou4QFVT0fsneP_g0umpUlY7pPiW3AUj0iIg",{"id":512,"title":276,"body":513,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":517,"navigation":352,"path":518,"seo":519,"stem":520,"__hash__":521},"posts/ipuclari/iis/.navigation.md",{"type":343,"value":514,"toc":515},[],{"title":346,"searchDepth":347,"depth":347,"links":516},[],{},"/ipuclari/iis/.navigation",{"title":276,"description":346},"ipuclari/iis/.navigation","zl9qxvnrSEksXoGXqf4t3nm5q4tAsAUoQZN7O2Pj6l8",{"id":523,"title":104,"body":524,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":528,"navigation":352,"path":529,"seo":530,"stem":531,"__hash__":532},"posts/ipuclari/javascript/.navigation.md",{"type":343,"value":525,"toc":526},[],{"title":346,"searchDepth":347,"depth":347,"links":527},[],{},"/ipuclari/javascript/.navigation",{"title":104,"description":346},"ipuclari/javascript/.navigation","l3NHgRo-FsSkV-HcqIpwTPoxjwyiA_Er6lWUBa_iyKU",{"id":534,"title":293,"body":535,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":539,"navigation":352,"path":540,"seo":541,"stem":542,"__hash__":543},"posts/ipuclari/nop-commerce/.navigation.md",{"type":343,"value":536,"toc":537},[],{"title":346,"searchDepth":347,"depth":347,"links":538},[],{},"/ipuclari/nop-commerce/.navigation",{"title":293,"description":346},"ipuclari/nop-commerce/.navigation","J3gbuZvYk7B3_EWUoYX4qmWCvGsfciErCs_DkpZS3o4",{"id":545,"title":117,"body":546,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":550,"navigation":352,"path":551,"seo":552,"stem":553,"__hash__":554},"posts/ipuclari/orchard-cms/.navigation.md",{"type":343,"value":547,"toc":548},[],{"title":346,"searchDepth":347,"depth":347,"links":549},[],{},"/ipuclari/orchard-cms/.navigation",{"title":117,"description":346},"ipuclari/orchard-cms/.navigation","emBSh7WkN8FUKMOnKi3efkXnJMctE9nz-z5apX2Nk28",{"id":556,"title":318,"body":557,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":561,"navigation":352,"path":562,"seo":563,"stem":564,"__hash__":565},"posts/ipuclari/wordpress/.navigation.md",{"type":343,"value":558,"toc":559},[],{"title":346,"searchDepth":347,"depth":347,"links":560},[],{},"/ipuclari/wordpress/.navigation",{"title":318,"description":346},"ipuclari/wordpress/.navigation","se7piGHmA3YAlKnPNPqIRhyiTc-1cdlxvCE_WChWiNs",{"id":567,"title":331,"body":568,"coverImage":349,"createDate":349,"description":346,"extension":350,"meta":572,"navigation":352,"path":573,"seo":574,"stem":575,"__hash__":576},"posts/ipuclari/xampp/.navigation.md",{"type":343,"value":569,"toc":570},[],{"title":346,"searchDepth":347,"depth":347,"links":571},[],{},"/ipuclari/xampp/.navigation",{"title":331,"description":346},"ipuclari/xampp/.navigation","-Eggmae4KDrGpf_pbmsKkFN0yO5CtVI5ak5TYdCiNwI",{"id":578,"title":23,"body":579,"coverImage":1080,"createDate":1081,"description":1082,"extension":350,"meta":1083,"navigation":352,"path":24,"seo":1084,"stem":25,"__hash__":1085},"posts/dersler/asp-net-mvc/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11.md",{"type":343,"value":580,"toc":1078},[581,585,596,601,604,611,617,620,633,638,660,665,670,710,717,734,740,751,757,760,789,794,924,934,945,951,961,967,978,984,1005,1011,1029,1035,1040,1045,1051,1055,1061,1064,1067,1075],[582,583,23],"h1",{"id":584},"aspnet-mvc-code-first-ile-veritabanı-i̇şlemleri-1-proje-başlangıcı-aspnet-mvc-yazı-dizisi-11",[586,587,588],"p",{},[589,590,591,592],"strong",{},"Önceki Yazı : ",[593,594,79],"a",{"href":80,"title":595},"Önceki yazı",[586,597,598],{},[589,599,600],{},"Merhaba Arkadaşlar,",[586,602,603],{},"Önceki yazılarımızda, Mvc sistemini genel olarak incelemiş, Layout, Partial View gibi konuları irdelemiş, Razor'u kapsamlı bir şekilde incelemiştik. ",[586,605,606,607,610],{},"Şimdi ise veritabanı konusunu, ",[589,608,609],{},"Entity Framework Code First"," üzerinden inceliyor olacağız.",[586,612,613,616],{},[589,614,615],{},"Bundan sonra ki çalışmamızda, kapsamlı bir blog uygulaması geliştiriyor olacağız."," ",[586,618,619],{},"Asp.Net Mvc uygulamalarında, klasik Ado.Net sistemini kullanabildiğimiz gibi, Linq to Sql, Entity Framework gibi Orm sistemlerini kullanabiliyoruz. Biz uygulamamızda, Entity Framework'ün Code First yaklaşımını kullanacağız. Bu noktada, veritabanını ve yaklaşımları da kısaca özetleyelim.",[586,621,622,625,626,632],{},[589,623,624],{},"Veritabanı :"," Bir takım verilerin kayıtlı tutulmasını isteriz. Buna örnek olarak, kullanıcı adı ve şifreyi gösterebiliriz. Ancak, bunun gibi bir çok veriyi metin belgesinde tuttuğumuzu düşündüğümüzde, oluşacak karmaşayı da hayal edebiliriz. ",[593,627,631],{"href":628,"rel":629},"http://tr.wikipedia.org/wiki/Veritaban%C4%B1",[630],"nofollow","Veritabanı"," sayesinde, verilerimizi düzenli, ilişkili (burası önemli, örneğin verilen siparişler ile üyeleri eşleştirerek, kim hangi siparişleri vermiş, rahatlıkla görebiliriz) şekilde saklayabiliriz.",[586,634,635],{},[589,636,637],{},"Veritabanı Modelleme Yaklaşımları",[639,640,641,648,654],"ol",{},[642,643,644,647],"li",{},[589,645,646],{},"Database First :"," Eğer ki halihazırda, kurulu bir veritabanı varsa bu yaklaşım kullanılır. Sistem otomatik olarak, var olan veritabanında ki kolonları ve satırları, kod tarafında classlara çevirir.",[642,649,650,653],{},[589,651,652],{},"Model First :"," Görsel bir dizayn aracı ile, modelleme yapılır. Daha sonra sistem, otomatik olarak, veritabanını ve class yapılarını oluşturur. Code First öncesi en popüler yaklaşımdı.",[642,655,656,659],{},[589,657,658],{},"Code First :"," Son yıllarda en çok kullanılan yaklaşım olup, Microsoft'un sunduğu örneklerde de, en çok bu yaklaşımın kullanıldığı görülmektedir. Bu sistemde ise, veriler tamamen class yapıları olarak, kodlama ile yapılarak, veritabanının otomatik oluşması sağlanır.",[586,661,662],{},[589,663,664],{},"Artık projemizi yazmaya başlayalım.",[586,666,667],{},[589,668,669],{},"Projemizi Visual Studio 2013 üzerinde, .Net Framework 4.5 altyapısı ile Mvc 5 olarak geliştireceğiz.",[671,672,673,684],"ul",{},[642,674,675,676,679,680,683],{},"Öncelikle yeni bir Mvc projesi oluşturalım. Bunun için ",[589,677,678],{},"File>New>Project"," yolunu izleyelim. (nasıl yapılır için ",[593,681,682],{"href":100},"bakınız",")",[642,685,686,687,690,691,694,695,698,699,705,706,709],{},"Resimde de görebileceğiniz şekilde, ",[589,688,689],{},".Net Framework 4.5"," ü seçip, ",[589,692,693],{},"Asp.Net Web Application","'u seçelim, ",[589,696,697],{},"Name"," kısmına da ",[700,701,702],"em",{},[589,703,704],{},"Mvc Projesi"," yazıp ",[589,707,708],{},"OK"," tıklayalım.",[586,711,712],{},[713,714],"img",{"alt":715,"src":716},"Mvc projesinin açılması","/images/2014/01/2014-01-02-12_00_03.jpg",[671,718,719],{},[642,720,721,722,725,726,729,730,733],{},"Açılan ekranda ",[589,723,724],{},"MVC","'nin seçili olduğunu doğrulayıp, ",[589,727,728],{},"Authentication : Individual User Accounts"," olarak seçili olduğunu tespit edelim ve ",[589,731,732],{},"Ok"," tuşuna tıklayalım.",[586,735,736],{},[713,737],{"alt":738,"src":739},"One Asp.Net","/images/2014/01/2014-01-02-12_03_07.jpg",[586,741,742,743,746,747,750],{},"Bu noktada ",[589,744,745],{},"Authentication"," kısmına da değinmekte fayda var. ",[589,748,749],{},"Change Authentication","'a tıklarsak aşağıdaki ekran açılacaktır. Bu sistem Visual Studio 2013'te gelmiştir.",[586,752,753],{},[713,754],{"alt":755,"src":756},"Authentication seçenekleri","/images/2014/01/2014-01-02-12_06_30.jpg",[586,758,759],{},"Bu ekranda ki seçeneklere bakalım.",[671,761,762,768,774,780,786],{},[642,763,764,767],{},[589,765,766],{},"No Authentication :"," Bu seçenek seçilirse eğer, sistemde herhangi bir üyelik sistemi aktif olmayacaktır.",[642,769,770,773],{},[589,771,772],{},"Individual User Accounts :"," Eski Asp.Net Authentication'nun yerine gelen, verilerin Sql'de saklandığı, projelerimizin genelinde kullanacağımız üyelik sistemidir. Aynı zamanda bu sistem, Facebook, Open ID, Twitter, Google, Microsoft kullanıcı bilgileriyle giriş imkanı sağlayan yapıya da zemin hazırlamaktadır.",[642,775,776,779],{},[589,777,778],{},"Organizational Accounts :"," Windows Server ve Windows Azure, Active Directory altyapılıüyelik sistemleri için kullanılır.",[642,781,782,785],{},[589,783,784],{},"Windows Authentication :"," Windows kullanıcı bilgileri ile giriş yapmaya izin veren sistemdir. Bu sistem, Intranet gibi şirket içi yapılar için kullanılmaktadır.",[642,787,788],{},"Projemizi oluşturduktan sonra, öncelikle aşağıdaki listeye göre projemizin içindeki hazır gelen dosyaları silelim.",[586,790,791],{},[589,792,793],{},"Silinecekler",[671,795,796,806,812,817,830,838,843,848,863,866,873,883,891,904,907],{},[642,797,798,801,802,805],{},[589,799,800],{},"Content"," klasörünün içindeki ",[589,803,804],{},"Site.css"," dosyası",[642,807,808,811],{},[589,809,810],{},"Controllers"," klasörünün içindeki tüm dosyalar",[642,813,814,811],{},[589,815,816],{},"Models",[642,818,819,801,822,825,826,829],{},[589,820,821],{},"Views",[589,823,824],{},"Account"," ve ",[589,827,828],{},"Home"," klasörü",[642,831,832,801,835,805],{},[589,833,834],{},"Views>Shared",[589,836,837],{},"_LoginPartial.cshtml",[642,839,840,805],{},[589,841,842],{},"favicon.ico",[642,844,845,805],{},[589,846,847],{},"Project_Readme.html",[642,849,850,851,854,855,858,859,862],{},"Temizliğimizi yaptıktan sonra, ana dizinimize ",[589,852,853],{},"Data"," isimli bir klasör oluşturalım. Bunun için, projemize sağ tıklayıp,  ",[589,856,857],{},"Add>New"," ",[589,860,861],{},"Folder"," dememiz yeterli. Bu klasörün altına veritabanını temsil edecek classlarımızı yazacağız.",[642,864,865],{},"Daha önce, bir blog uygulaması yazacağımızı söylemiştim. Örnek projemizde, kapsamı mümkün olduğunca dar tutmaya çalışacağım. Böylelikle daha rahat kavranması, hedefimiz olacaktır. Bunun için hangi tablolara ihtiyacımız var? Bir düşünelim.​​",[642,867,868,869,872],{},"Üyelerin bilgilerinin tutulacağı, ",[589,870,871],{},"Uye"," tablosu,",[642,874,875,876,879,880,882],{},"Makalelerin bulunacağı, ",[589,877,878],{},"Makale"," tablosu (aynı zamanda, ",[589,881,871],{}," tablosuna bağlantılı olacak),",[642,884,885,886,879,889,882],{},"Makale içerisinde, kayıtlı olan etiketlerin bulunacağı, ",[589,887,888],{},"Etiket",[589,890,878],{},[642,892,893,894,897,898,900,901,903],{},"Yorumların bulunacağı, ",[589,895,896],{},"Yorum"," tablosu (aynı zamanda, hem ",[589,899,878],{},", hem de ",[589,902,871],{}," tablosuna bağlantılı olacak).",[642,905,906],{},"Yukarıda saydığımız, tablolarımızı hemen Code First ile modellemeye başlayalım.",[642,908,909,910,912,913,916,917,919,920,923],{},"Ana dizindeki, ",[589,911,853],{}," klasörümüze sağ tıklayıp, ",[589,914,915],{},"Add>Class"," diyelim ve adını ",[589,918,871],{}," olarak değiştirip ",[589,921,922],{},"Add"," tuşuna tıklayalım. Oluşan dosyanın içeriğini, aşağıdaki gibi değiştirelim. (Açıklamalar, yorum satırı olarak, kodların içerisine eklenmiştir.)",[925,926,931],"pre",{"className":927,"code":929,"language":930},[928],"language-text","using System;\nusing System.Collections.Generic;\n\n//Bu isim uzayını eklememizin sebebi, [DataType],[StringLength] gibi Attribute'leri tanımlıyor olmamız.\nusing System.ComponentModel.DataAnnotations;\n\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Uye\n    {\n        //Bu alan tablonun id'si olacak. Tablo adının sonuna Id takısı eklendiğinde, framework bu alanı otomatik olarak, \n//tablonun anahtar sütunu yani primary key'si yapacaktır. Bu varsayılanı değiştirmek mümkündür, \n//ancak bu konuya girmeyeceğiz. Detaylı bilgi için, Code First Fluent olarak araştırma yapabilirsiniz.\n        public int UyeId { get; set; }\n\n        //Bu alanı zorunlu hale getiriyoruz. Böylelikle boş geçilemeyecek.\n        [Required(ErrorMessage = \"Lütfen adınızı giriniz.\")]\n        //Girilen metnin uzunluğunu belirtiyoruz. İlk değişken minimum uzunluk olurken, sonrakiler ise, opsiyonel girdilerdir.\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Adınızı 3-50 karakter arasında girebilirsiniz.\")]\n        public string Ad { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen soyadınızı giriniz.\")]\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Soyadınızı 3-50 karakter arasında girebilirsiniz.\")]\n        public string Soyad { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen e-posta adresinizi giriniz.\")]\n        //Girilen metnin, geçerli bir e-posta adresi formatında girilmesini sağlıyoruz. \n        //DataType tipleri, Microsoft tarafından Framework'e eklenen hazır tiplerdir.\n        [DataType(DataType.EmailAddress, ErrorMessage = \"Lütfen e-posta adresinizi geçerli bir formatta giriniz.\")]\n        public string EPosta { get; set; }\n\n        //Required Attribute'si eklemediğimiz için, bu alan zorunlu olmayacak ve boş geçilebiliyor olacak.\n        //Girilen metnin, geçerli bir web sitesi adresi formatında girilmesini sağlıyoruz. \n        [DataType(DataType.Url, ErrorMessage = \"Lütfen web site adresinizi, geçerli bir formatta giriniz.\")]\n        public string WebSite { get; set; }\n\n        //Girilen metnin, geçerli bir resim yolu formatında girilmesini sağlıyoruz. \n        [DataType(DataType.ImageUrl, ErrorMessage = \"Lütfen resim yolunuzu doğru şekilde giriniz.\")]\n        public string ResimYol { get; set; }\n\n\n        [Required(ErrorMessage = \"Lütfen üye olma tarihini giriniz.\")]\n        //Girilen tarihin, geçerli bir tarih ve saat formatında girilmesini sağlıyoruz.\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen üye olma tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime UyeOlmaTarih { get; set; }\n\n    }\n}\n","text",[932,933,929],"code",{"__ignoreMap":346},[671,935,936],{},[642,937,938,939,941,942,944],{},"Yine ",[589,940,853],{}," klasörümüze, ",[589,943,878],{}," adında bir class ekleyelim ve içeriğini aşağıdaki gibi düzenleyelim.",[925,946,949],{"className":947,"code":948,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Makale\n    {\n        public int MakaleId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin başlığını giriniz.\")]\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Makale başlığı 3-50 karakter arasında olmalıdır.\")]\n        public string Baslik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin içeriğini giriniz.\")]\n        //Girilen metnin, html formatında girilmesini sağlıyoruz.\n        [DataType(DataType.Html, ErrorMessage = \"Lütfen makale içeriğini html formatında giriniz.\")]\n        public string Icerik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin eklenme tarihini giriniz.\")]\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen makalenin eklenme  tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime Tarih { get; set; }\n\n    }\n}\n",[932,950,948],{"__ignoreMap":346},[671,952,953],{},[642,954,955,956,941,958,960],{},"Şimdi de ",[589,957,853],{},[589,959,888],{}," adında bir class ekleyelim. ardından içeriğini aşağıdaki gibi düzenleyelim.",[925,962,965],{"className":963,"code":964,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Etiket\n    {\n        public int EtiketId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen etiketin içeriğini giriniz.\")]\n        [StringLength(50, ErrorMessage = \"Etiketin içeriği 50 karakterden uzun olamaz.\")]\n        public string Icerik { get; set; }\n    }\n}\n",[932,966,964],{"__ignoreMap":346},[671,968,969],{},[642,970,971,972,974,975,977],{},"Son olarak da, ",[589,973,853],{}," klasörüne ",[589,976,896],{}," adında bir class ekleyelim. İçeriğini aşağıdaki gibi düzenleyelim.",[925,979,982],{"className":980,"code":981,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Yorum\n    {\n        public int YorumId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen yorumunuzu giriniz.\")]\n        public string Icerik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen yorumun yapılma tarihini giriniz.\")]\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen yorum yapılma tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime Tarih { get; set; }\n    }\n}\n",[932,983,981],{"__ignoreMap":346},[671,985,986,999],{},[642,987,988,989,991,992,994,995,998],{},"Evet, veritabanında tablolarımızı temsil edecek sınıflarımızı oluşturduk. Buraya kadar her şey tamam. Ancak örneğin üyelerin yorumlarını, düzenli bir şekilde kaydedebilmek için, ",[589,990,896],{}," ile ",[589,993,871],{}," tablosu arasında ki ilişkiyi nasıl kuracağız? Bunun için, aradaki ilişkiyi sağlayacak sql tarafında ki adıyla ",[589,996,997],{},"Foreign Key","'lere ihtiyacımız var. Şimdi bu Foreign Key sütunlarımızı tablomuza ekleyelim. ",[642,1000,1001,1002,1004],{},"Öncelikle ",[589,1003,896],{}," sınıfımızı aşağıdaki gibi değiştirelim.",[925,1006,1009],{"className":1007,"code":1008,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Yorum\n    {\n        public int YorumId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen yorumunuzu giriniz.\")]\n        public string Icerik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen yorumun yapılma tarihini giriniz.\")]\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen yorum yapılma tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime Tarih { get; set; }\n\n        //Her yorum, yalnızca bir makaleye ait olabilir. Bu yüzden, tek bir makaleye bağlıyoruz. \n        //Dikkat edileceği üzere veri türü (burada aynı zamanda sınıf) olarak Makale yazılıyor.\n        public virtual Makale Makale { get; set; }\n\n        //Her yorumu, yalnızca bir kişi yazmış olabilir.\n        public virtual Uye Uye { get; set; }\n    }\n}\n",[932,1010,1008],{"__ignoreMap":346},[671,1012,1013,1024],{},[642,1014,1015,1016,1018,1019,900,1021,1023],{},"Görüldüğü üzere ",[589,1017,896],{}," sınıfımıza hem ",[589,1020,871],{},[589,1022,878],{}," sınıfımızdan link vermiş olduk. Kod içerisinde ki yorum satırlarına lütfen dikkat ediniz. ",[642,1025,955,1026,1028],{},[589,1027,871],{}," sınıfımızı aşağıdaki gibi güncelleyelim.",[925,1030,1033],{"className":1031,"code":1032,"language":930},[928],"using System;\nusing System.Collections.Generic;\n\n//Bu isim uzayını eklememizin sebebi, [DataType],[StringLength] gibi Attribute'leri tanımlıyor olmamız.\nusing System.ComponentModel.DataAnnotations;\n\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Uye\n    {\n        //Bu alan tablonun id'si olacak. Tablo adının sonuna Id takısı eklendiğinde, framework bu alanı otomatik olarak, \n        //tablonun anahtar sütunu yani primary key'si yapacaktır. Bu varsayılanı değiştirmek mümkündür, ancak bu konuya \n        //girmeyeceğiz. Detaylı bilgi için, Code First Fluent olarak araştırma yapabilirsiniz.\n        public int UyeId { get; set; }\n\n        //Bu alanı zorunlu hale getiriyoruz. Böylelikle boş geçilemeyecek.\n        [Required(ErrorMessage = \"Lütfen adınızı giriniz.\")]\n        //Girilen metnin uzunluğunu belirtiyoruz. İlk değişken minimum uzunluk olurken, sonrakiler ise, opsiyonel \n        //girdilerdir.\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Adınızı 3-50 karakter arasında girebilirsiniz.\")]\n        public string Ad { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen soyadınızı giriniz.\")]\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Soyadınızı 3-50 karakter arasında girebilirsiniz.\")]\n        public string Soyad { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen e-posta adresinizi giriniz.\")]\n        //Girilen metnin, geçerli bir e-posta adresi formatında girilmesini sağlıyoruz. \n        //DataType tipleri, Microsoft tarafından Framework'e eklenen hazır tiplerdir.\n        [DataType(DataType.EmailAddress, ErrorMessage = \"Lütfen e-posta adresinizi geçerli bir formatta giriniz.\")]\n        public string EPosta { get; set; }\n\n        //Required Attribute'si eklemediğimiz için, bu alan zorunlu olmayacak ve boş geçilebiliyor olacak.\n        //Girilen metnin, geçerli bir web sitesi adresi formatında girilmesini sağlıyoruz. \n        [DataType(DataType.Url, ErrorMessage = \"Lütfen web site adresinizi, geçerli bir formatta giriniz.\")]\n        public string WebSite { get; set; }\n\n        //Girilen metnin, geçerli bir resim yolu formatında girilmesini sağlıyoruz. \n        [DataType(DataType.ImageUrl, ErrorMessage = \"Lütfen resim yolunuzu doğru şekilde giriniz.\")]\n        public string ResimYol { get; set; }\n\n\n        [Required(ErrorMessage = \"Lütfen üye olma tarihini giriniz.\")]\n        //Girilen tarihin, geçerli bir tarih ve saat formatında girilmesini sağlıyoruz.\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen üye olma tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime UyeOlmaTarih { get; set; }\n\n        //Bir üyenin, birden çok yorumu olabileceği için Yorumları bir liste içerisine alıyoruz. \n        //Property adının sonuna s takısı koymamızın sebebi, veri tipinin çoğul olduğunun daha kolay anlaşılabilmesi \n        //içindir. Entity varsayılan olarak, liste verilerin sonuna s takısı koymaktadır.\n        //Biz de bu standarda uyum gösterdik. Eğer veri tipinin adı zaten s ile bitiyorsa o zaman da s yi siliyoruz.\n        //Örneğin hayvanlarla ilgili bir tabloda, Kus adlı bir sınıfımız çoğul olarak temsil edilecekse Ku olarak \n        //kullanabiliriz.\n        public virtual List\u003CYorum> Yorums { get; set; }\n\n        //Bir üyenin eklediği, birden çok makale olabilir.\n        public virtual List\u003CMakale> Makales { get; set; }\n    }\n}\n",[932,1034,1032],{"__ignoreMap":346},[671,1036,1037],{},[642,1038,1039],{},"Yukarıda verilen bilgiler çerçevesinde, diğer sınıflarımızı da güncelleyelim.",[586,1041,1042,1044],{},[589,1043,888],{}," sınıfı",[925,1046,1049],{"className":1047,"code":1048,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Etiket\n    {\n        public int EtiketId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen etiketin içeriğini giriniz.\")]\n        [StringLength(50, ErrorMessage = \"Etiketin içeriği 50 karakterden uzun olamaz.\")]\n        public string Icerik { get; set; }\n\n        //Aynı etiket, birden çok makale de kullanılıyor olabilir.\n        public virtual List\u003CMakale> Makales { get; set; }\n    }\n}\n",[932,1050,1048],{"__ignoreMap":346},[586,1052,1053,1044],{},[589,1054,878],{},[925,1056,1059],{"className":1057,"code":1058,"language":930},[928],"using System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Web;\n\nnamespace MvcProjesi.Data\n{\n    public class Makale\n    {\n        public int MakaleId { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin başlığını giriniz.\")]\n        [StringLength(50, MinimumLength = 3, ErrorMessage = \"Makale başlığı 3-50 karakter arasında olmalıdır.\")]\n        public string Baslik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin içeriğini giriniz.\")]\n        //Girilen metnin, html formatında girilmesini sağlıyoruz.\n        [DataType(DataType.Html, ErrorMessage = \"Lütfen makale içeriğini html formatında giriniz.\")]\n        public string Icerik { get; set; }\n\n        [Required(ErrorMessage = \"Lütfen makalenin eklenme tarihini giriniz.\")]\n        [DataType(DataType.DateTime, ErrorMessage = \"Lütfen makalenin eklenme  tarihini, doğru bir şekilde giriniz.\")]\n        public DateTime Tarih { get; set; }\n\n        public virtual Uye Uye { get; set; }\n\n        //Bir makalede, birden çok yorum bulunabilir.\n        public virtual List\u003CYorum> Yorums { get; set; }\n\n        //Bir makale de, birden çok etiket bulunabilir.\n        public virtual List\u003CEtiket> Etikets { get; set; }\n    }\n}\n",[932,1060,1058],{"__ignoreMap":346},[586,1062,1063],{},"Son değişikliklerimizi de yaptıktan sonra, veritabanında bulunacak tabloları, sadece kod ile modellemeyi başardık.",[586,1065,1066],{},"Tablolarımız hazır, bu tablolarımızın oluşturulup, veritabanına kaydedilmesi işlemlerini, bir sonraki dersimizde işleyeceğiz.",[586,1068,1069,1070,1074],{},"Projenin son halini ",[593,1071,1073],{"href":1072},"/images/proje-dosyalar/asp-net-mvc-code-first-ile-veritabani-islemleri-proje-baslangici-asp-net-mvc-yazi-dizisi-11/MvcProjesi.zip","buradan"," indirebilirsiniz.",[586,1076,1077],{},"Hepinize kolaylıklar diliyorum.",{"title":346,"searchDepth":347,"depth":347,"links":1079},[],"2014/01/modelleme-yaklasimlari.png","2014-01-04T00:00:00.000Z","Önceki Yazı : Asp.Net Mvc Razor View Engine Bölüm 3 (Asp.Net Mvc Yazı Dizisi – 10)",{},{"title":23,"description":1082},"45Rjo0SfBuLxUrblGYTMZXHzlkgA8P_KBfPUf2XqjjA",1762871733728]