﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bilgehan Yıldız</title>
	<atom:link href="http://bilgehanyildiz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bilgehanyildiz.com</link>
	<description>Yenmek de yenilmek de seçimle başlar, sadece istersen yenilirsin</description>
	<lastBuildDate>Thu, 19 Apr 2012 11:41:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>MICROSOFT CRM 4 KUYRUK GÖRÜNÜMÜNÜ DEĞİŞTİRME</title>
		<link>http://bilgehanyildiz.com/2012/04/19/microsoft-crm-4-kuyruk-gorunumunu-degistirme/</link>
		<comments>http://bilgehanyildiz.com/2012/04/19/microsoft-crm-4-kuyruk-gorunumunu-degistirme/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 11:41:22 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[CRM]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=280</guid>
		<description><![CDATA[Özelliştirmelerden form görünümlerini değiştirebilirken bazı özel görünümleri direkt olarak değiştiremeyiz.Bu görünümlerin savedquery tablosundaki IsCustomizable alanıda zaten false olarak işaretlenmiştir Örnek olarak Kuyruğun görünümünü değiştirmek istediğimizde bunu direkt olarak özelleştirmelerden yapamayacağız Bunu yapabilmek için crmin toollarından view editorü kullanmamız gerekir View &#8230; <a href="http://bilgehanyildiz.com/2012/04/19/microsoft-crm-4-kuyruk-gorunumunu-degistirme/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Özelliştirmelerden form görünümlerini değiştirebilirken bazı özel görünümleri direkt olarak değiştiremeyiz.Bu görünümlerin savedquery tablosundaki IsCustomizable alanıda zaten false olarak işaretlenmiştir</p>
<p>Örnek olarak Kuyruğun görünümünü değiştirmek istediğimizde bunu direkt olarak özelleştirmelerden yapamayacağız</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/kuyruk1.jpg"><img class="alignnone size-medium wp-image-282" title="kuyruk1" src="http://bilgehanyildiz.com/wp-content/uploads/kuyruk1-300x85.jpg" alt="" width="300" height="85" /></a></p>
<p>Bunu yapabilmek için crmin toollarından view editorü kullanmamız gerekir</p>
<p>View Editöre ilgili görünümüzün idsini vererek ulaşabiliriz</p>
<p>Bu ViewID bulabilmek için ise öncelikle Entity Tablosundan Kuyruk Item ObjectTypeCodenu buluyoruz</p>
<p>Select * from Entity where Name=&#8217;QueueItem&#8217;</p>
<p>Daha sonra bulduğumuz ObjectTypeCode, SavedQuery viewindeki ReturnedTypeCode alanında kullanıyoruz</p>
<p>Select * from  SavedQuery where ReturnedTypeCode=2029</p>
<p>Burada bizim değiştirmek istediğimiz Genel kuyruk görünümü olduğu için onun SavedQueryId sini alıyoruz</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/kuyruk2.jpg"><img class="alignnone size-medium wp-image-283" title="kuyruk2" src="http://bilgehanyildiz.com/wp-content/uploads/kuyruk2-300x126.jpg" alt="" width="300" height="126" /></a></p>
<p>İd den sonraki kısma SavedQueryId yi ve localhost yazan kısma ise serverınızın adresini vererek vieweditorden kuyruk görünümüne ulaşabilirsiniz</p>
<p>http://localhost/tools/viewEditor/viewManager.aspx?id={00000000-0000-0000-00AA-000010001400}</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/kuyruk3.jpg"><img class="alignnone size-medium wp-image-284" title="kuyruk3" src="http://bilgehanyildiz.com/wp-content/uploads/kuyruk3-300x134.jpg" alt="" width="300" height="134" /></a></p>
<p>Burda değişiklikleri yapıp kaydettikten sonra</p>
<p>Crmimizden ayarlardan özelleştirmelere gelerek Tüm Özelleştirmeleri yayımla diyoruz böylece kuyruk görünümünde istediğimiz alanları görünüme koyabiliyoruz</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/kuyruk4.jpg"><img class="alignnone size-medium wp-image-285" title="kuyruk4" src="http://bilgehanyildiz.com/wp-content/uploads/kuyruk4-300x85.jpg" alt="" width="300" height="85" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2012/04/19/microsoft-crm-4-kuyruk-gorunumunu-degistirme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET THEME(SKIN VE CSS) KULLANIMI</title>
		<link>http://bilgehanyildiz.com/2012/03/28/asp-net-themeskin-ve-css-kullanimi/</link>
		<comments>http://bilgehanyildiz.com/2012/03/28/asp-net-themeskin-ve-css-kullanimi/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 05:03:06 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=274</guid>
		<description><![CDATA[Asp.Net ve Html kontrollerimizin görünümlerini bir merkezden yönetebilmek amacıyla temalardan faydalanırız. Bunun için öncelikle projemize  Add Asp.Net Folder seçeneğinden Theme folderını ekliyoruz.Tema dosyasına resim,skin ve css dosyalarını ekliyoruz. Skin dosyaları asp.net kontrollerinin görünüşlerini değiştirmek için kullanılır. Örnek olarak sayfadaki bütün &#8230; <a href="http://bilgehanyildiz.com/2012/03/28/asp-net-themeskin-ve-css-kullanimi/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Asp.Net ve Html kontrollerimizin görünümlerini bir merkezden yönetebilmek amacıyla temalardan faydalanırız.</p>
<p>Bunun için öncelikle projemize  Add Asp.Net Folder seçeneğinden Theme folderını ekliyoruz.Tema dosyasına resim,skin ve css dosyalarını ekliyoruz.</p>
<p>Skin dosyaları asp.net kontrollerinin görünüşlerini değiştirmek için kullanılır.</p>
<p>Örnek olarak sayfadaki bütün labellerımızın arka planı kırmızı,yazılarının ise sarı olmasını istiyoruz.Aynı zamanda bütün butonlarımızın arka planlarının mavi yazılarının sarı olmasını istiyoruz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/tema1.jpg"><img class="alignnone size-medium wp-image-275" title="tema1" src="http://bilgehanyildiz.com/wp-content/uploads/tema1-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>Bunun için yukarıdaki resimdeki gibi bir skin dosyasını oluşturarak ismini DefaultSkinFile verelim ve içine aşağıdaki gibi kodlarımızı yazalım.</p>
<p>&lt;asp:Label runat=&#8221;server&#8221; Font-Italic=&#8221;true&#8221; BackColor=&#8221;Red&#8221; ForeColor=&#8221;Yellow&#8221;/&gt;</p>
<p>&lt;asp:Button runat=&#8221;server&#8221; Font-Italic=&#8221;true&#8221; BackColor=&#8221;Blue&#8221; ForeColor=&#8221;Yellow&#8221;/&gt;</p>
<p>Theme yı sayfa bazlı ya da default olarak web configden okutacak şekilde yazabiliriz.</p>
<p>Sayfaya direkt olarak vermek istiyorsak html olarak page tanımının yapıldığı yere Theme adını vermemiz yeterlidir.</p>
<p>&lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221; Theme=&#8221;Theme1&#8243;  CodeFile=&#8221;Default.aspx.cs&#8221;</p>
<p>Bunu dedikten sonra resimdede görüleceği üzere sayfada bulunan bütün label ve buttonlarımız standart bir formata geldi ve her biri için ayrı ayrı property ayarı yapmadık</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/tema2.jpg"><img class="alignnone size-medium wp-image-276" title="tema2" src="http://bilgehanyildiz.com/wp-content/uploads/tema2-300x108.jpg" alt="" width="300" height="108" /></a></p>
<p>Bu theme  işlemini uygulama bazında bütün sayfalar için yapmak isteseydik web configde system.web altındaki pages kısmını şeklinde yazmamız yeterli olacaktır</p>
<p>&lt;pages theme=&#8221;Theme1&#8243;&gt;</p>
<p>&lt;/pages&gt;</p>
<p>Bütün sayfalarımızın temaya tabi olmasını ancak bir sayfamızın theme almamasını istiyoruz bunun için ise sayfamıza gelerek page ayarları kısmında EnableTheming=”false” yazmamız yeterlidir.</p>
<p>&lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221;  EnableTheming=&#8221;false&#8221;</p>
<p>Bir theme dosyası birden fazla skin dosyasına sahip olabilir.Ancak bir kontrol bir theme için bir kere tanımlanabilir(Eğer SkinID özelliği kullanılmayacak ise).Ancak bir kontrolün farklı görünümler almasını istiyor isek bu sefer SkinID özelliğinden faydalanmamız gerekecektir.Skin dosyamızı açarak iki farklı Label görünümü tanımlıyoruz ve ikisinede farklı skinID ler veriyoruz</p>
<p>&lt;asp:Label runat=&#8221;server&#8221; Font-Italic=&#8221;true&#8221; BackColor=&#8221;Red&#8221; ForeColor=&#8221;Yellow&#8221; SkinID=&#8221;a&#8221;/&gt;</p>
<p>&lt;asp:Label runat=&#8221;server&#8221; Font-Italic=&#8221;true&#8221; BackColor=&#8221;Black&#8221; ForeColor=&#8221;Yellow&#8221; SkinID=&#8221;b&#8221;/&gt;</p>
<p>Bu şekilde bir skinde aynı kontrol birden fazla geçiyor ise default olarak sayfaya Theme vermek yetmeyecektir.Bütün Label kontrollerine gelerek hangi SkinID ile çalışacağını belirlememiz gerekmektedir.</p>
<p>Sayfamızdaki kontroller ise aşağıdaki gibi olacaktır</p>
<p>    &lt;asp:Label ID=&#8221;lblSayi1&#8243;  runat=&#8221;server&#8221; Text=&#8221;Sayi1&#8243; SkinID=&#8221;a&#8221;</p>
<p>                    meta:resourcekey=&#8221;lblSayi1Resource1&#8243;&gt;&lt;/asp:Label&gt;</p>
<p>&lt;asp:Label ID=&#8221;lblSayi2&#8243; runat=&#8221;server&#8221; Text=&#8221;Sayi2&#8243; SkinID=&#8221;b&#8221;</p>
<p>                    meta:resourcekey=&#8221;lblSayi2Resource1&#8243;&gt;&lt;/asp:Label&gt;</p>
<p>Görüldüğü gibi her label kendi SkinID si belli oldu.</p>
<p>Skin server kontrolleri için kullanılırken genellikle CSS ise sayfa görünümündeki değişiklikler için kullanılır.</p>
<p>CSS oluşturmak için skindeki gibi add new item diyerek StyleSheet dosyasını oluşturuyoruz.Ve içine aşağıdaki gibi örnek kodlar yazıyoruz</p>
<p>body {</p>
<p>}</p>
<p>.label</p>
<p>{</p>
<p>background-color:Red;</p>
<p>color:Yellow;</p>
<p> }</p>
<p> .MyDefaultValue</p>
<p>{</p>
<p>color:Yellow;</p>
<p>font-family:Verdana;</p>
<p>background-color:Red;</p>
<p>}</p>
<p>Daha sonra ise sayfamıza bir bu css yerini page head kısmında belirterek controlün cssclassına ise css dosyasında belirlediğimiz kuralın ismini yazıyoruz.Styleları css dosyası yaratmadan sayfa bazlı yapmakta mümkündür.Css server controllerine verdiğimiz gibi table vs html elementlerindede kullanabiliyoruz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/Tema3.jpg"><img class="alignnone size-medium wp-image-277" title="Tema3" src="http://bilgehanyildiz.com/wp-content/uploads/Tema3-300x107.jpg" alt="" width="300" height="107" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2012/03/28/asp-net-themeskin-ve-css-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET GLOBAL ve LOCAL RESOURCE KULLANIMI VE FARKLARI</title>
		<link>http://bilgehanyildiz.com/2012/03/27/asp-net-global-ve-local-resource-kullanimi-ve-farklari-2/</link>
		<comments>http://bilgehanyildiz.com/2012/03/27/asp-net-global-ve-local-resource-kullanimi-ve-farklari-2/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 05:14:32 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=257</guid>
		<description><![CDATA[Uygulamalarımızda çoklu dil desteği yapmak için global ve local resource dosyalarından faydalarınız. Genelde uygulamalarda çoklu dil desteği yapmak için bir dropdowndanda dil değiştiğinde uygulamadaki buton,label vs alanların text kısımlarıda değişeceği bir yapı kurulur. Aşağıdaki gibi örnek bir form oluşturalım. Daha &#8230; <a href="http://bilgehanyildiz.com/2012/03/27/asp-net-global-ve-local-resource-kullanimi-ve-farklari-2/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uygulamalarımızda çoklu dil desteği yapmak için global ve local resource dosyalarından faydalarınız.</p>
<p>Genelde uygulamalarda çoklu dil desteği yapmak için bir dropdowndanda dil değiştiğinde uygulamadaki buton,label vs alanların text kısımlarıda değişeceği bir yapı kurulur.</p>
<p>Aşağıdaki gibi örnek bir form oluşturalım.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal15.jpg"><img class="alignnone size-medium wp-image-263" title="globallocal1" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal15-300x113.jpg" alt="" width="300" height="113" /></a></p>
<p>Daha sonra local resource dosyasını oluşturmak için</p>
<p>Toolsdan &#8212; &gt;Generate Local Resource seçeneğine basalım bu sayede otomatik olarak sayfamıza ait resource dosyası oluşacaktır.Bu şekilde generate ettiğimizde otomatik olarak controllere meta:resourcekey eklenerek localizasyon kullanımına hazır hale gelecektir</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal61.jpg"><img class="alignnone size-medium wp-image-266" title="globallocal6" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal61-300x141.jpg" alt="" width="300" height="141" /></a></p>
<p>Bunun yerine asp.net folderlarından App_LocalResources dosyasını ekleyerek içine add new item diyip resource dosyasını manuel de oluşturabiliriz.</p>
<p>Biz default olarak Türkçe kullanacağız ancak İngilizce desteğide istiyoruz bunun için generate dediğimizde oluşan local resource file kopyasını alarak default.aspx.en-Us.resx  şeklinde ismini değiştiriyoruz.en-Us yazan yer her dil için farklı bir kod olacaktır ,İngilizce için bu şekildedir.Daha sonra kontrollerimizin text alanlarını bu dosyada değiştiriyoruz</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal21.jpg"><img class="alignnone size-medium wp-image-267" title="globallocal2" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal21-300x126.jpg" alt="" width="300" height="126" /></a></p>
<p>Bu işlemi yaptıktan sonra istediğimiz dropdown listen seçtiğimiz dile göre sayfanın İngilizce veya Türkçe olması bunun için ise sayfamıza aşağıdaki gibi kodlarımızı eklememiz lazım.</p>
<p>Buradaki kod bloğu msndede mevcuttur.İngilizce olması için ddlDilin ingilizce seçeneğinin valuesu en-Us şeklindedir.</p>
<p> protected override void InitializeCulture()</p>
<p>    {</p>
<p>        if (Request.Form["ddlDil"] != null)</p>
<p>        {</p>
<p>            String selectedLanguage = Request.Form["ddlDil"];</p>
<p>            UICulture = selectedLanguage;</p>
<p>            Culture = selectedLanguage;</p>
<p>            Thread.CurrentThread.CurrentCulture =</p>
<p>                 CultureInfo.CreateSpecificCulture(selectedLanguage);</p>
<p>            Thread.CurrentThread.CurrentUICulture = new</p>
<p>                CultureInfo(selectedLanguage);</p>
<p>            base.InitializeCulture();</p>
<p>        }</p>
<p>    }</p>
<p>Aşağıdaki resimlerdede görüldüğü gibi web sayfasının title özelliğine kadar bile bu yöntemle değiştirebiliyoruz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal3.jpg"><img class="alignnone size-medium wp-image-268" title="globallocal3" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal3-300x81.jpg" alt="" width="300" height="81" /></a></p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal4.jpg"><img class="alignnone size-medium wp-image-269" title="globallocal4" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal4-300x97.jpg" alt="" width="300" height="97" /></a></p>
<p>Global Resources ise local resource benzemekle beraber aralarındaki fark local resources sayfa bazında kullanılırken global resources birden fazla sayfa için kullanabilirsiniz.Örnek sadece ad,tip,yaratılma zamanı gibi aynı alanları içeren ama farklı formlara sahip yapılarda tek bir global resource dosyası tanımlamak işinize yarayabilir</p>
<p>Bunun içinse projemize asp.net folderlarından App_GlobalResources dosyasını ekliyoruz ve bu dosyanın içine resource dosyamızı oluşturuyoruz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal5.jpg"><img class="alignnone size-medium wp-image-270" title="globallocal5" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal5-300x73.jpg" alt="" width="300" height="73" /></a></p>
<p>Ve Butonumuzun değerinin local resource dosyası değilde global dosyadan okunmasını istiyoruz bunun içinse  Texti global dosyadaki değerden okuyacak şekilde ayarlıyoruz</p>
<p>&lt;asp:Button ID=&#8221;btnTopla&#8221; runat=&#8221;server&#8221; Text=&#8221;&lt;%$Resources:globalResource,ToplaButton %&gt;&#8221;</p>
<p>/&gt;</p>
<p>Not:aşağıdaki kod bloğu local resourceden okunacak şekilde meta:resourcekey attribute içerir.Eğer localden değil globalden okuyacak bu attribute olmamalıdır.</p>
<p>&lt;asp:Button ID=&#8221;btnTopla&#8221; runat=&#8221;server&#8221; Text=&#8221;topla&#8221;</p>
<p>                    meta:resourcekey=&#8221;btnToplaResource1&#8243;  /&gt;</p>
<p> Tabi yine globalresource kullanarak ingilizce yapmak istiyorsak</p>
<p>globalResource.en-Us.resx şeklinde aynı dosyamızın ingilizce değerlerini içerecek en-Us uzantılı resource dosyasını yaratmamız gerekiyor</p>
<p>protected override void InitializeCulture() yine bu metod içindeki kodların olması gerekiyor.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/globallocal7.jpg"><img class="alignnone size-medium wp-image-271" title="globallocal7" src="http://bilgehanyildiz.com/wp-content/uploads/globallocal7-300x101.jpg" alt="" width="300" height="101" /></a></p>
<p>Resimdede görüldüğü üzere aynı sayfada hem global resourceden hem local resourcedan değerler okutmak mümkündür</p>
<p>Not:Local resource otomatik generate ettiğimizde sayfamızın özelliklerinede aşağıdaki gibi eklemeler gelmektedir</p>
<p>&lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221;  CodeFile=&#8221;Default.aspx.cs&#8221; Inherits=&#8221;_Default&#8221; culture=&#8221;auto&#8221; meta:resourcekey=&#8221;PageResource1&#8243; uiculture=&#8221;auto&#8221; %&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2012/03/27/asp-net-global-ve-local-resource-kullanimi-ve-farklari-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLUENT NHIBERNATE DE PARENT-CHILD (MASTER- DETAIL) FORMATTA  KAYIT EKLEME(SAVE YONTEMİ))</title>
		<link>http://bilgehanyildiz.com/2012/02/18/fluent-nhibernate-de-parent-child-master-detail-formatta-kayit-eklemesave-yontemi/</link>
		<comments>http://bilgehanyildiz.com/2012/02/18/fluent-nhibernate-de-parent-child-master-detail-formatta-kayit-eklemesave-yontemi/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 10:38:39 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=246</guid>
		<description><![CDATA[Aralarında 1 – n ilişki olan varlıklarda child varlıkta parent kayda ilişkin bir Foreign Key tutarız.Dolayısıyla child varlığı ekleyeceğimiz zaman bu Foreign Key değerini vererek gerekli kayıt işlemini gerçekleştirmiş oluruz.Ancak bazı durumlarda parent kayıt eklenirken (Daha henüz databasede yaratılmadan) bu &#8230; <a href="http://bilgehanyildiz.com/2012/02/18/fluent-nhibernate-de-parent-child-master-detail-formatta-kayit-eklemesave-yontemi/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aralarında 1 – n ilişki olan varlıklarda child varlıkta parent kayda ilişkin bir Foreign Key tutarız.Dolayısıyla child varlığı ekleyeceğimiz zaman bu Foreign Key değerini vererek gerekli kayıt işlemini gerçekleştirmiş oluruz.Ancak bazı durumlarda parent kayıt eklenirken (Daha henüz databasede yaratılmadan) bu parent kayda bağlı child varlıkları eklemek ve bunların hepsini bir seferde database kayıt olmasını isteyebiliriz.Örnek olarak Bir Master Kayıt Kişi ve buna bağlı Telefonlar ikiside farklı varlıklar olarak düşünülürse kişiyi eklediğimiz anda telefonlarınıda eklemek istiyoruz ve bunuda database iki kere gitmeden tek bir save ile halletmek istiyoruz</p>
<p>Fluent Nhibernate de bunu yapabilmek için aşağıdaki adımlar izlenmelidir</p>
<p>Burada  master entity PersonType ,child Entity Person olarak düşünülmüştür.Amaç Yeni bir persontype yaratırken buna bağlı personlarıda veritabanına ekleyebilmektir.</p>
<p>Birinci varlığımız PersonType içinde childları olan personları barındırıyor</p>
<p>public class PersonType</p>
<p>{</p>
<p>public virtual int ID { get; set; }</p>
<p>public virtual string Name { get; set; }</p>
<p>public virtual ICollection&lt;Person&gt; Persons { get; set; }</p>
<p>}</p>
<p>İkinci varlığımız(child olan) Person ise dikkat edilirse Foreign Keyini direkt int gibi alacak şekilde değil,nesne tabanlı olacak şekilde tasarlıyoruz.</p>
<p>public partial class Person</p>
<p>{</p>
<p>public virtual int ID { get; set; }</p>
<p>public virtual string Name { get; set; }</p>
<p>public virtual PersonType PersonTypes { get; set; }</p>
<p>}</p>
<p>Maplarimiz ise aşağıdaki şekilde tasarlıyoruz.Dikkat edilirse Fluent Nhibernate Giriş 2 deki basit mapleme mantığından farklı olarak artık İlişkili alanları nesne mantığında tutuyoruz.</p>
<p>public PersonTypeMap()</p>
<p>{</p>
<p>Table(&#8220;PersonType&#8221;);</p>
<p>Schema(&#8220;dbo&#8221;);</p>
<p>Id(x =&gt; x.ID);</p>
<p>Map(x =&gt; x.Name);</p>
<p>HasMany&lt;Person&gt;(x =&gt; x.Persons).Cascade.AllDeleteOrphan().KeyColumn(&#8220;ID&#8221;).Inverse().Table(&#8220;PersonType&#8221;);</p>
<p>}</p>
<p>public class PersonMap:ClassMap&lt;Person&gt;</p>
<p>{</p>
<p>public PersonMap()</p>
<p>{</p>
<p>Table(&#8220;Person&#8221;);</p>
<p>Schema(&#8220;Common&#8221;);</p>
<p>Id(x =&gt; x.ID);</p>
<p>Map(x =&gt; x.Name);</p>
<p>References(x =&gt; x.PersonTypes).Column(&#8220;PersonTypeID&#8221;).Cascade.None();</p>
<p>}</p>
<p>}</p>
<p>Bundan sonra Parent – Child olarak tek bir seferde save yapabilmek için aşağıdaki gibi bir kod yazmak yeterli olacaktır.Aşağıdaki koddada görüldüğü üzere Sistem Admin Tipini yaratırken ona bağlı olarak Person varlığınıda yaratıyoruz.Bu işlemleride runtimede tek bir savede yaptığımız için mappinglerimizide nesne tabanlı çalışcak hale getiriyoruz.</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>PersonType p = new PersonType();</p>
<p>p.Name = &#8220;Sistem Admin&#8221;;</p>
<p>p.Persons  = new Collection&lt;Person&gt;();</p>
<p>Person p2 = new Person { Name = &#8220;Bilgehan Yıldız&#8221;,PersonTypes=p};</p>
<p>p.Persons.Add(p2);</p>
<p>session.Save(p);</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2012/02/18/fluent-nhibernate-de-parent-child-master-detail-formatta-kayit-eklemesave-yontemi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL SERVER 2008 REPORTING SERVICE HTML FORMATINDA BİLGİ GÖSTERME</title>
		<link>http://bilgehanyildiz.com/2012/01/13/sql-server-2008-reporting-service-html-formatinda-bilgi-gosterme/</link>
		<comments>http://bilgehanyildiz.com/2012/01/13/sql-server-2008-reporting-service-html-formatinda-bilgi-gosterme/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 10:00:43 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[SQL SERVER]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=227</guid>
		<description><![CDATA[SSRS 2008 deki özelliklerden biride eğer verilerimiz veritabanından html formatında geliyor ise bunu yorumyalabilmesidir.Aşağıdaki şekilde Düz başlığı altında yazan yerde görüldüğü gibi eğer verilerimizi direkt olarak basarsak bu şekilde gözükecektir Ancak yukarıdaki şekilde html başlığındaki gibi verilerimizdeki html taglarının yorumlanmasını &#8230; <a href="http://bilgehanyildiz.com/2012/01/13/sql-server-2008-reporting-service-html-formatinda-bilgi-gosterme/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>SSRS 2008 deki özelliklerden biride eğer verilerimiz veritabanından html formatında geliyor ise bunu yorumyalabilmesidir.Aşağıdaki şekilde Düz başlığı altında yazan yerde görüldüğü gibi eğer verilerimizi direkt olarak basarsak bu şekilde gözükecektir</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html1.jpg"><img class="alignnone size-medium wp-image-228" title="ssrs2008html1" src="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html1-156x300.jpg" alt="" width="156" height="300" /></a></p>
<p>Ancak yukarıdaki şekilde html başlığındaki gibi verilerimizdeki html taglarının yorumlanmasını istiyorsak bu değişikliği yapmak istediğimiz hücreye çift tıklayıp sağ tuş dan create placeholder diyoruz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html2.jpg"><img class="alignnone size-medium wp-image-229" title="ssrs2008html2" src="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html2-300x95.jpg" alt="" width="300" height="95" /></a></p>
<p>Açılan popup da markuptype kısmında html interpret seçeneğini seçiyoruz.Daha sonra gene aynı popupta value değerini belirliyoruz.Böylece gelen verimizdeki html tagları yorumlanabiliyor</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html3.jpg"><img class="alignnone size-medium wp-image-230" title="ssrs2008html3" src="http://bilgehanyildiz.com/wp-content/uploads/ssrs2008html3-300x277.jpg" alt="" width="300" height="277" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2012/01/13/sql-server-2008-reporting-service-html-formatinda-bilgi-gosterme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADO.NET-1</title>
		<link>http://bilgehanyildiz.com/2011/12/31/adonet1/</link>
		<comments>http://bilgehanyildiz.com/2011/12/31/adonet1/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 09:15:43 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=218</guid>
		<description><![CDATA[1-)Öncelikle bağlantı cümlesini tek merkezi bir yerde tutmalısınız,bu şart değildir ancak uygulama taşımalarında kolaylık sağlar. Bu window uygulamaları için app.config ,web uygulamaları için web.configdir.Bunlar temelde bir nevi xml dosyası olup genelde uygulamarda tek bir merkezden okunması gereken değerler buralara konur &#8230; <a href="http://bilgehanyildiz.com/2011/12/31/adonet1/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1-)Öncelikle bağlantı cümlesini tek merkezi bir yerde tutmalısınız,bu şart değildir ancak uygulama taşımalarında kolaylık sağlar. Bu window uygulamaları için app.config ,web uygulamaları için web.configdir.Bunlar temelde bir nevi xml dosyası olup genelde uygulamarda tek bir merkezden okunması gereken değerler buralara konur</p>
<p>Örnek app.config dosyası  burada connection stringimizi aşağıdaki gibi yazıyoruz.Daha sonra veri tabanımızın yolu vs değişirse sadece burdan değişiklik yapmamız yeterli oluyor.Bunuda projene eklemek için aşağıdaki adımları izlemelesiniz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ado1.jpg"><img class="alignnone size-medium wp-image-219" title="ado1" src="http://bilgehanyildiz.com/wp-content/uploads/ado1-263x300.jpg" alt="" width="263" height="300" /></a></p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ado2.jpg"><img class="alignnone size-medium wp-image-220" title="ado2" src="http://bilgehanyildiz.com/wp-content/uploads/ado2-300x186.jpg" alt="" width="300" height="186" /></a></p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243; ?&gt;</p>
<p>&lt;configuration&gt;</p>
<p>&lt;configSections&gt;</p>
<p>&lt;/configSections&gt;</p>
<p>&lt;connectionStrings&gt;</p>
<p>&lt;add name=&#8221;TelefonRehberiConnectionString&#8221;</p>
<p>connectionString=&#8221;Data Source=.;Initial Catalog=TelefonRehberi;Integrated Security=True&#8221;</p>
<p>providerName=&#8221;System.Data.SqlClient&#8221; /&gt;</p>
<p>&lt;/connectionStrings&gt;</p>
<p>&lt;/configuration&gt;</p>
<p>Bunuda kodda kullanmak için aşağıdaki şekilde kod yazmamız lazım</p>
<p>Bunu yapmadan önce projemize referans&#8211;&gt;Add&#8211;&gt;System.Configuration dll eklememiz gerekmektedir</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ado3.jpg"><img class="alignnone size-medium wp-image-221" title="ado3" src="http://bilgehanyildiz.com/wp-content/uploads/ado3-300x280.jpg" alt="" width="300" height="280" /></a></p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/ado4.jpg"><img class="alignnone size-medium wp-image-222" title="ado4" src="http://bilgehanyildiz.com/wp-content/uploads/ado4-300x252.jpg" alt="" width="300" height="252" /></a></p>
<p>string baglantiyolu = ConfigurationManager.ConnectionStrings["TelefonRehberiConnectionString"].ConnectionString;</p>
<p>2-)connection string örnekleri</p>
<p>Connection stringde</p>
<p>Data Source àmakina adı,ip vs olabilir,. Dersen makinandaki local sql servera bağlanır</p>
<p>Initial CatalogàBuraya database adını yazman gerekir</p>
<p>User IdàDatabaselere genelde güvenlik için kullanıcılar açılır.Databasede hakkı olan kullanıcı</p>
<p>PasswordàDatabase kullanıcısına ait şifre</p>
<p>Data Source=ServerAd;Initial Catalog=DbAd;User Id=KullanıcıAd;Password= 1234;</p>
<p>Bu şekilde bir bağlantı yapılırsa Integrated Security =True diye bu o database windows authenticate yani şifre vermeden bağlanabileceğini gösterir</p>
<p>Data Source=.;Initial Catalog=TelefonRehberi;Integrated Security=True</p>
<p>Alternatif bağlantı cümleleri için aşağıdaki adresi inceleyebilirsiniz</p>
<p><a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a></p>
<p>3-)Veritabanına bağlanıp sonuçları bir küme içine almak için gereken kodlar</p>
<p>Sql serverla iş yapacaksan SqlConnection ,Access ile yapacaksan OleDbConnection gibi veritabanın değişirse kullancağın bu yapıları değiştirmelisin ancak mantıkları aynıdır.</p>
<p>string baglantiyolu = ConfigurationManager.ConnectionStrings["TelefonRehberiConnectionString"].ConnectionString;</p>
<p>//Sql Connection bunun ile içine veritabanı yolunu vererek nereye bağlancağımızı belirtiyoruz</p>
<p>SqlConnection conn = new SqlConnection(baglantiyolu);</p>
<p>//Veritabanımızdan döncek kayıtları bir yere almam lazım ,datatable de verileri alabileceğim bir küme olarak düşün</p>
<p>DataTable dt = new DataTable();</p>
<p>//Select sorgusu atarak veritabanından istediğim alanları çekebilirim</p>
<p>string sorgu = &#8220;Select KisiID,Ad,Soyad from Kisi&#8221;;</p>
<p>//Sqldataadapter ise kendisine verilen sorgu ve veritabanını kullanarak işlemleri gerçekliyeceğimiz sınıftır</p>
<p>SqlDataAdapter adap = new SqlDataAdapter(sorgu, conn);</p>
<p>//Fill metodu ile Datatable gibi dolmasını istediğimiz veri kümesinin içine datalarımızı atıyoruz</p>
<p>adap.Fill(dt);</p>
<p>//En sonda bu veri kümemizi grid gibi bir elemanın kaynağına atayarak gösterilmesi vs.. gibi işlemleri yapabiliriyoruz</p>
<p>dataGridView1.DataSource = dt;</p>
<p>4-)SqlCommand ise SqlAdapter gibidir ancak daha çok stored procedure,insert,update,delete gibi işlemlerde tercih edilir.Ancak Command ile işlem yapılırken database bağlantıyı senin açıp kapaman gerekir.</p>
<p>conn.Open();àVeritabanı bağlantısını açar</p>
<p>cmd.ExecuteNonQuery();àCommand nesnesini çalıştırmak için kullanılır</p>
<p>conn.Close();Veritabanı bağlantısını kapar</p>
<p>sqlparameter ise sorgularının parametre almasını istersen resimdeki değerleri formdan okuyup database kaydetmek istiyorsan önce</p>
<p>sorgunda @ ile belirttiğin kelimeler parametredir</p>
<p>Daha sonra bu parametreler değer ataman gerekir</p>
<p>Örnek parametre listesinin 0 ıncı elemanı @Ad parametresine denk geliyor değeri formdaki name alanı</p>
<p>paramlist[0]=new SqlParameter(&#8220;@Ad&#8221;, txtName.Text);</p>
<p>Bütün bunları yaptıktan sonra query çalıştırmadan önce bunların hepsini aşağıdaki gibi commandına eklemen lazım</p>
<p>cmd.Parameters.AddRange(paramlist);</p>
<p>Bütün bunları yaptıktan sonra command nesneni aşağıdaki gibi çalıştırdığında işlemi yapıyor</p>
<p>cmd.ExecuteNonQuery();</p>
<p>bool Cinsiyet;</p>
<p>if(rdbBay.Checked)</p>
<p>Cinsiyet=true;</p>
<p>else</p>
<p>Cinsiyet=false;</p>
<p>string baglantiyolu = ConfigurationManager.ConnectionStrings["TelefonRehberiConnectionString"].ConnectionString;</p>
<p>SqlConnection conn = new SqlConnection(baglantiyolu);</p>
<p>string sorgukisiekle = &#8220;Insert Into Kisi(Ad,Soyad,Cinsiyet,Yas,TcKimlik) values(@Ad,@Soyad,@Cinsiyet,@Yas,@TcKimlik)&#8221;;</p>
<p>SqlParameter[] paramlist = new SqlParameter[5];</p>
<p>paramlist[0]=new SqlParameter(&#8220;@Ad&#8221;, txtName.Text);</p>
<p>paramlist[1] = new SqlParameter(&#8220;@Soyad&#8221;, txtSoyad.Text);</p>
<p>paramlist[2] = new SqlParameter(&#8220;@Cinsiyet&#8221;, Cinsiyet);</p>
<p>paramlist[3] = new SqlParameter(&#8220;@Yas&#8221;, nudYas.Value);</p>
<p>paramlist[4] = new SqlParameter(&#8220;@TcKimlik&#8221;, txtTcKimlik.Text);</p>
<p>SqlCommand cmd = new SqlCommand(sorgukisiekle, conn);</p>
<p>cmd.Parameters.AddRange(paramlist);</p>
<p>conn.Open();</p>
<p>cmd.ExecuteNonQuery();</p>
<p>conn.Close();</p>
<p>5-)SqlParametrelerini kullanmanın farklı yöntemleri var örnek olarak yukarıda benim yaptığım bir parametre listesi oluşturmaktı ancak parametreleri şu şekilde de ekleyebilirdim</p>
<p>Aşağıdaki gibi parametreleri tek tek ekleyebilirsiniz mesela farklı algoritmalarda işine yarar</p>
<p>SqlParameter param=new SqlParameter(&#8220;@Ad&#8221;, txtName.Text);</p>
<p>cmd.Parameters.Add(param);</p>
<p>6-)Aşağıdaki şekilde hiç parametre kullanmadan da işlem yapılabilir ancak bunu kesinlikle yapma ,sql injection hatalarına vs neden olabilir.ve kod okunabilirliğini azalır.</p>
<p>string sorgukisiekle = &#8220;Insert Into Kisi(Ad,Soyad,Cinsiyet,Yas,TcKimlik) values(@Ad=&#8221;+txtName.Text+&#8221;,@Soyad=&#8221;+txtSoyad.Text&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2011/12/31/adonet1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FluentNHibernate – Nhibernate Giris -2</title>
		<link>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris2/</link>
		<comments>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris2/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 11:41:34 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=213</guid>
		<description><![CDATA[Mapping işlemlerinden ve SessionFactory Create ettikten sonra artık örnek sorguları oluşturabilirsiniz Nhibernate le alakalı örnek sorgular 1-)Select All var session = NHibernateHelper.OpenSession(); IList&#60;Person&#62; ab = session.CreateCriteria(typeof(Person)).List&#60;Person&#62;(); 2-) ID vererek bir listedeki tek kaydı çekme var session = NHibernateHelper.OpenSession(); PersonType pt=session.Load&#60;PersonType&#62;(1); &#8230; <a href="http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris2/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mapping işlemlerinden ve SessionFactory Create ettikten sonra artık örnek sorguları oluşturabilirsiniz</p>
<p>Nhibernate le alakalı örnek sorgular</p>
<p>1-)Select All</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList&lt;Person&gt; ab = session.CreateCriteria(typeof(Person)).List&lt;Person&gt;();</p>
<p>2-) ID vererek bir listedeki tek kaydı çekme</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>PersonType pt=session.Load&lt;PersonType&gt;(1);</p>
<p>3-)Insert</p>
<p>using (var session = NHibernateHelper.OpenSession())</p>
<p>{</p>
<p>using (var transaction = session.BeginTransaction())</p>
<p>{</p>
<p>var newPerson = new Person</p>
<p>{</p>
<p>Name = &#8220;abc4&#8243;,</p>
<p>PersonTypeID = 3</p>
<p>};</p>
<p>session.Save(newPerson);</p>
<p>transaction.Commit();</p>
<p>}</p>
<p>}</p>
<p>4-)Update</p>
<p>using (var session = NHibernateHelper.OpenSession())</p>
<p>{</p>
<p>using (var transaction = session.BeginTransaction())</p>
<p>{</p>
<p>var newPerson = new Person</p>
<p>{</p>
<p>ID = 5,</p>
<p>Name = &#8220;abc88&#8243;,</p>
<p>PersonTypeID = 3</p>
<p>};</p>
<p>session.Update(newPerson);</p>
<p>transaction.Commit();</p>
<p>}</p>
<p>}</p>
<p>5-)Insert or Update &#8212; &gt; SaveOrUpdate bu kodda eğer ID verirseniz güncelleme yapar,ID verilmez ise direkt olarak insert yapar.Ancak ID niz otomatik artansa ve o ID ait kayıt yoksa bu kod size hata fırlatır.</p>
<p>using (var session = NHibernateHelper.OpenSession())</p>
<p>{</p>
<p>using (var transaction = session.BeginTransaction())</p>
<p>{</p>
<p>var newPerson = new Person</p>
<p>{</p>
<p>// ID = 5,</p>
<p>Name = &#8220;abc78&#8243;,</p>
<p>PersonTypeID = 3</p>
<p>};</p>
<p>session.SaveOrUpdate(newPerson);//session.Update(newPerson);</p>
<p>transaction.Commit();</p>
<p>}</p>
<p>}</p>
<p>6-)Select Top sorgu sonucu maximum istenen kayıt sayısı</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>ICriteria crit = session.CreateCriteria(typeof(Person));</p>
<p>crit.SetMaxResults(1);</p>
<p>IList mylist = crit.List();</p>
<p>7-)Distinct</p>
<p>Distinct Metod 1</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person)).SetProjection(Projections.Distinct(Projections.Property(&#8220;Name&#8221;))).List();</p>
<p>Distinct Metod 2</p>
<p>ICriteria criteria</p>
<p>= session.CreateCriteria(typeof(Person));</p>
<p>criteria.SetProjection(Projections.Distinct(Projections.ProjectionList().</p>
<p>Add(Projections.Alias(Projections.Property(&#8220;Name&#8221;), &#8220;Name&#8221;)).</p>
<p>Add(Projections.Alias(Projections.Property(&#8220;PersonTypeID&#8221;), &#8220;PersonTypeID&#8221;))));</p>
<p>criteria.SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Person)));</p>
<p>IList people = criteria.List();</p>
<p>8-)Order By</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person)).AddOrder(Order.Desc(&#8220;ID&#8221;)).List();</p>
<p>9-)Inner Join</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person)).CreateAlias(&#8220;PersonTypes&#8221;, &#8220;PersonType&#8221;, NHibernate.SqlCommand.JoinType.InnerJoin).List();</p>
<p>10-)Aggerate Fonksiyonlaràavg,max,min vs&#8230;</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person)).SetProjection(Projections.Avg(&#8220;ID&#8221;)).List();</p>
<p>11-)Sorgularımıza where koşulu ekleme örnek Nhibernate ile in , eq ,like vs&#8230;</p>
<p>Expression kullanarak Filtre</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person))</p>
<p>/*In sorgusu*/</p>
<p>//   .Add(Expression.In(&#8220;ID&#8221;, new int[] { 1, 2 })).List();</p>
<p>/*Eşittir*/</p>
<p>// .Add(Expression.Eq(&#8220;ID&#8221;, 1)).List();</p>
<p>/*Like*/</p>
<p>.Add(Expression.Like(&#8220;Name&#8221;,&#8221;abx%&#8221;)).List();</p>
<p>Restriction kullanarak Filtre yapmak</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList mylist = session.CreateCriteria(typeof(Person))</p>
<p>.Add(Restrictions.Eq(&#8220;ID&#8221;, 1)).List();</p>
<p>Not :Restriction ve Expression birbirlerine benzer ancak expression daha fazla depreciated metoddur.Tavsiye edilen Restriction kullanımıdır.</p>
<p>12-)CreateAlias ve CreateCriteria:İkisi arasında temelde fark yoktur.Tek fark CreateCriteriada daha fazla overload şansınız vardır.</p>
<p>IList mylist = session.CreateCriteria(typeof(Person)).CreateCriteria(&#8220;PersonTypes&#8221;, &#8220;PersonType&#8221;, NHibernate.SqlCommand.JoinType.InnerJoin).List();</p>
<p>IList mylist2 = session.CreateCriteria(typeof(Person)).CreateAlias(&#8220;PersonTypes&#8221;, &#8220;PersonType&#8221;, NHibernate.SqlCommand.JoinType.InnerJoin).List();</p>
<p>13-)Nhibernate içine direkt olarak Sql kodu koyabilmek</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>session.CreateSQLQuery(&#8220;select * from PersonType p&#8221;).List();</p>
<p>14-)HSQL: Nhibernate criteria ile yapılabilen sorgulama hsql ile yapılabilir.Ancak nhibernate forumlarında hsql daha esnek olduğu yönündedir</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>int count= Convert.ToInt32(session.CreateQuery(&#8220;select Count(*) from PersonType&#8221;).UniqueResult()); /</p>
<p>//HSQL içine parametre koymak</p>
<p>var blogs = session.CreateQuery(&#8220;from PersonType p where p.ID = :ID&#8221;)</p>
<p>.SetParameter(&#8220;ID&#8221;, &#8220;1&#8243;).List();</p>
<p>IQuery query = session.CreateQuery(&#8220;FROM PersonType&#8221;);</p>
<p>IList&lt;PersonType&gt; pers = query.List&lt;PersonType&gt;();</p>
<p>15-)Nhibernate de Lamda Expression ve Linq kullanım örneği</p>
<p>Linq kullanabilmek için Nhibernate.Linq namespaceini eklememiz gerekmektedir</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>Lamda Expression</p>
<p>// PersonType p = session.QueryOver&lt;PersonType&gt;().Where(px =&gt; px.ID==1).SingleOrDefault();</p>
<p>PersonType p2 = session.Query&lt;PersonType&gt;().Where(px =&gt; px.ID == 1).SingleOrDefault();</p>
<p>Linq Örneği</p>
<p>var BuildQuery1=(from p in session.QueryOver&lt;PersonType&gt;() where p.ID==1 select p).List();</p>
<p>var BuildQuery = (from p in session.Query&lt;PersonType&gt;() where p.ID == 1 select p).ToList();</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FluentNHibernate – Nhibernate Giriş -1</title>
		<link>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris1/</link>
		<comments>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris1/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 11:39:46 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=208</guid>
		<description><![CDATA[Nhibernate entity framework,llblgen gibi bir orm tooludur.FluentNHibernate ise nhibernatedeki xml olarak yapılan nesnelerin mapping işlemini classlarda daha kolay bir şekilde yapmamıza olanak sağlayan bir yapıdır. Nhibernate ve FluentNHibernate kullanmak için bazı dllleri alıp kendi projenize eklemek yeterlidir.Ayrıca bir program kurmaya &#8230; <a href="http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris1/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nhibernate entity framework,llblgen gibi bir orm tooludur.FluentNHibernate ise nhibernatedeki xml olarak yapılan nesnelerin mapping işlemini classlarda daha kolay bir şekilde yapmamıza olanak sağlayan bir yapıdır.</p>
<p>Nhibernate ve FluentNHibernate kullanmak için bazı dllleri alıp kendi projenize eklemek yeterlidir.Ayrıca bir program kurmaya vs gerek yoktur</p>
<p>FluentNHibernate.dll</p>
<p>NHibernate.dll&#8230;</p>
<p>Gibi bir kaçtane dlli http://fluentnhibernate.org/ adresinden indirerek kendi projenize referans olarak ekleyin.Fluent Nhibernatele beraber xml olarak yazacağımız mapping sınıfları kodda yapabiliyoruz.Ancak stored procedure vs kullanmak istersek bu işlemleri gene xml ile yapmak gerekmektedir</p>
<p>Öncelikle Veritabanımızdaki tablolarımızı modelliyoruz</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/nhibernate1.jpg"><img class="alignnone size-medium wp-image-209" title="nhibernate1" src="http://bilgehanyildiz.com/wp-content/uploads/nhibernate1-300x108.jpg" alt="" width="300" height="108" /></a></p>
<p>Önce Person ve PersonType ları modelliyoruz.Propertyleri virtual yapmamızın amacı nhibernatedeki lazy load özelliğini kullanabilmek içindir.Burdaki her Person bir tipte alabileceği için tek nesnede.PersonTypeler ise birden fazla Personda olacağı için liste şeklinde tasarlandı</p>
<p>public class Person</p>
<p>{</p>
<p>public virtual int ID { get; set; }</p>
<p>public virtual string Name { get; set; }</p>
<p>public virtual int PersonTypeID { get; set; }</p>
<p>public virtual PersonType PersonTypes { get; set; }</p>
<p>}</p>
<p>public class PersonType</p>
<p>{</p>
<p>public virtual int ID { get; set; }</p>
<p>public virtual string Name { get; set; }</p>
<p>public virtual IList&lt;Person&gt; Persons { get; set; }</p>
<p>}</p>
<p>Fluent Nhibernate ile normal nhibernate xml de yaptığımız mapping işlemini kodla yapabiliyoruz.Map sınıflarını kullanabilmek için ise namespace ekliyoruz</p>
<p>using FluentNHibernate.Mapping;</p>
<p>Map classımızı mutlaka ClassMap den türemelidir ve içine generic olarak map etmek istediğimiz nesneyi yazıyoruz.</p>
<p>Diğer dikkat edilmesi gereken nokta ise ilişkiler kısmıdır.</p>
<p>Bizim senaryomuz gereği her Person bir tipi olacaktır.Dolayısıyla person nesnesindeki PersonTypeID alanı esasında bir foreign keydir</p>
<p>Bu ilişkiyide References komutuyla yapıyoruz.Ancak PersonTypeMap classında böyle bir foreign key yok ancak bunun personla ilişkisini belirtmek için HasMany komutunu kullanıyoruz</p>
<p>public class PersonMap:ClassMap&lt;Person&gt;</p>
<p>{</p>
<p>public PersonMap()</p>
<p>{</p>
<p>Table(&#8220;Person&#8221;);</p>
<p>Schema(&#8220;Common&#8221;);</p>
<p>Id(x =&gt; x.ID);</p>
<p>Map(x =&gt; x.Name);</p>
<p>Map(x =&gt; x.PersonTypeID);</p>
<p>References(x =&gt; x.PersonTypes).Column(&#8220;PersonTypeID&#8221;).ReadOnly();//ReadOnly demezsek bu alan insertte soruna neden oluyor</p>
<p>}</p>
<p>}</p>
<p>public class PersonTypeMap : ClassMap&lt;PersonType&gt;</p>
<p>{</p>
<p>public PersonTypeMap()</p>
<p>{</p>
<p>Table(&#8220;PersonType&#8221;);</p>
<p>Schema(&#8220;dbo&#8221;);</p>
<p>Id(x =&gt; x.ID);</p>
<p>Map(x =&gt; x.Name);</p>
<p>HasMany&lt;Person&gt;(x =&gt; x.Persons);</p>
<p>}</p>
<p>}</p>
<p>Daha sonra ise bir tane Helper Class yazarak SessionFactory mizi fluent nhibernate le uyumlu olacak şekilde oluştuyoruz</p>
<p>GetSessionFactory() metodundaki</p>
<p>.FluentMappings.AddFromAssemblyOf&lt;PersonTypeMap&gt;())</p>
<p>addfromassemblyof komutu ile de mappingleri yüklüyoruz ancak oluşturulan xml dosyalarını da bir yere almak istersek bu kodun sonuna ExportTo komutunu koyarak mappinglerin xml hallerinide görebiliriz</p>
<p>.Mappings(m =&gt; m.FluentMappings.AddFromAssembly(assembly)<br />
.ExportTo(@&#8221;C:\your\export\path&#8221;)</p>
<p>public  class NHibernateHelper</p>
<p>{</p>
<p>private static ISessionFactory _SessionFactory;</p>
<p>public static ISessionFactory SessionFactory</p>
<p>{</p>
<p>get</p>
<p>{</p>
<p>if (_SessionFactory == null)</p>
<p>//InitializeSessionFactory();</p>
<p>_SessionFactory = GetSessionFactory();</p>
<p>return _SessionFactory;</p>
<p>}</p>
<p>}</p>
<p>public static ISessionFactory GetSessionFactory()</p>
<p>{</p>
<p>return Fluently.Configure()</p>
<p>.Database(</p>
<p>MsSqlConfiguration.MsSql2005</p>
<p>.ConnectionString(c =&gt; c</p>
<p>.Database(&#8220;TelefonRehberi&#8221;)</p>
<p>.Server(&#8220;.&#8221;)</p>
<p>.Password(&#8220;1234&#8243;)</p>
<p>.Username(&#8220;sa&#8221;)</p>
<p>)</p>
<p>)</p>
<p>.Mappings(m =&gt; m</p>
<p>.FluentMappings.AddFromAssemblyOf&lt;PersonTypeMap&gt;())</p>
<p>.BuildSessionFactory();</p>
<p>}</p>
<p>public static ISession OpenSession()</p>
<p>{</p>
<p>return SessionFactory.OpenSession();</p>
<p>}</p>
<p>}</p>
<p>Daha sonra Formumuzdan aşağıdaki gibi bir yöntemle ilk sorgumuzu yazabiliyoruz</p>
<p>private void button2_Click(object sender, EventArgs e)</p>
<p>{</p>
<p>var session = NHibernateHelper.OpenSession();</p>
<p>IList&lt;Person&gt; ab = session.CreateCriteria(typeof(Person)).List&lt;Person&gt;();</p>
<p>MessageBox.Show(ab[1].PersonTypes.Name);</p>
<p>}</p>
<p>Yukarıdaki sorgu Person tablosundaki bütün kayıtları alarak ekrana gelen Person nesnesin PersonType ‘ın adını bize verecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2011/11/10/fluentnhibernatenhibernategiris1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM 4 Varlıklara Hızlı Bulda Pasif Kayıtlarında Dahil Edilmesi</title>
		<link>http://bilgehanyildiz.com/2011/10/25/dynamics-crm-4-varliklara-hizli-bulda-pasif-kayitlarinda-dahil-edilmesi/</link>
		<comments>http://bilgehanyildiz.com/2011/10/25/dynamics-crm-4-varliklara-hizli-bulda-pasif-kayitlarinda-dahil-edilmesi/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 07:27:12 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[CRM]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=199</guid>
		<description><![CDATA[Hızlı Bulda Genellikle Etkin kayıtlar içinde arama yapılır.Veya farklı kombinasyonlarda bu hızlı arama sorgusunu değiştirmek isteyebiliriz. Ancak hızlı bul görünümü direkt olarak özelleştirmelerden formlardan girerel değiştirmek mümkün değildir Bunun için özelleştirmeler den özelleştirmeleri ver diyerek ilgili varlığığın customization dosyasını alıyoruz &#8230; <a href="http://bilgehanyildiz.com/2011/10/25/dynamics-crm-4-varliklara-hizli-bulda-pasif-kayitlarinda-dahil-edilmesi/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hızlı Bulda Genellikle Etkin kayıtlar içinde arama yapılır.Veya farklı kombinasyonlarda bu hızlı arama sorgusunu değiştirmek isteyebiliriz.</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/quick1.jpg"><img class="alignnone size-medium wp-image-200" title="quick1" src="http://bilgehanyildiz.com/wp-content/uploads/quick1-300x37.jpg" alt="" width="300" height="37" /></a></p>
<p>Ancak hızlı bul görünümü direkt olarak özelleştirmelerden formlardan girerel değiştirmek mümkün değildir</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/quick2.jpg"><img class="alignnone size-medium wp-image-201" title="quick2" src="http://bilgehanyildiz.com/wp-content/uploads/quick2-300x104.jpg" alt="" width="300" height="104" /></a></p>
<p>Bunun için özelleştirmeler den özelleştirmeleri ver diyerek ilgili varlığığın customization dosyasını alıyoruz</p>
<p><a href="http://bilgehanyildiz.com/wp-content/uploads/quick3.jpg"><img class="alignnone size-medium wp-image-202" title="quick3" src="http://bilgehanyildiz.com/wp-content/uploads/quick3-300x54.jpg" alt="" width="300" height="54" /></a></p>
<p>Daha sonra customization dosyasını açarak Hızlı bul formunu buluyoruz.Dikkat edileceği gibi ilgili formun fetch xml yapısında değişiklik yapmamız gerekmektedir.Aşağıdaki resimdeki ve bu senaryodaki gibi pasifleşmiş inaktif kayıtlarıda hızlı bula dahil etmek istersek en alttaki resimdeki gibi kırmızı içine alınmış filtre conditionını kaldırmamız yeterli olacaktır</p>
<p><strong> &lt;filter&gt;</strong></p>
<p><strong> &lt;condition attribute=&#8221;statecode&#8221; operator=&#8221;eq&#8221; value=&#8221;0&#8243; /&gt;</strong></p>
<p><strong> &lt;/filter&gt;</strong></p>
<p><strong><a href="http://bilgehanyildiz.com/wp-content/uploads/quick4.jpg"><img class="alignnone size-medium wp-image-203" title="quick4" src="http://bilgehanyildiz.com/wp-content/uploads/quick4-300x234.jpg" alt="" width="300" height="234" /></a></strong></p>
<p><strong>Daha sonra ise bu customizationımızı yine özelleştirmeler </strong><strong>àözelleştirmeleri  al diyerek sisteme yüklüyoruz.Değişikliklerimizi yayımla dedikten sonra  artık inaktif kayıtlarda hızlı bul aramalarında gelebiliyor olacaktır</strong></p>
<p><strong><em>NOT:ANCAK BU GELİŞTİRME UNSUPPORTED BİR GELİŞTİRMEDİR!!!</em><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2011/10/25/dynamics-crm-4-varliklara-hizli-bulda-pasif-kayitlarinda-dahil-edilmesi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KODDA ENUM DEĞİŞKENLERİNİ ÇOKLU OLARAK KULLANMAK – BİT İŞLEMLERİ</title>
		<link>http://bilgehanyildiz.com/2011/10/22/koddaenumdegiskenlerinicokluolarakkullanmakbitislemleri/</link>
		<comments>http://bilgehanyildiz.com/2011/10/22/koddaenumdegiskenlerinicokluolarakkullanmakbitislemleri/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 10:39:54 +0000</pubDate>
		<dc:creator>bilgehanyildiz</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://bilgehanyildiz.com/?p=194</guid>
		<description><![CDATA[Enumlar kod okunabilirliğini arttıran veya bazı keywordlerimizi belli değerlerle birlikte temsil etmemize sağlayan bir tiptir. Hemen hemen her yerde görebileceğimiz en temel enum yapısına örnek olarak genelde günler kullanılır. public enum Gunler { Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar &#8230; <a href="http://bilgehanyildiz.com/2011/10/22/koddaenumdegiskenlerinicokluolarakkullanmakbitislemleri/">Okumaya devam et <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Enumlar kod okunabilirliğini arttıran veya bazı keywordlerimizi belli değerlerle birlikte temsil etmemize sağlayan bir tiptir.</p>
<p>Hemen hemen her yerde görebileceğimiz en temel enum yapısına örnek olarak genelde günler kullanılır.</p>
<p>public enum Gunler</p>
<p>{</p>
<p>Pazartesi,</p>
<p>Sali,</p>
<p>Carsamba,</p>
<p>Persembe,</p>
<p>Cuma,</p>
<p>Cumartesi,</p>
<p>Pazar</p>
<p>}</p>
<p>Tabi Enumlarımızı temsil eden değerlerde atabiliriz.Bu makalede içine enum tipinde bir değişken alan fonksiyonun kullanımını göreceğimiz için ben aşağıdaki gibi bu temsil değerlerini 2 ve 2 nin katları şeklinde yaptım nedeni ise bit işlem yapabilmek için</p>
<p>public enum Gunler</p>
<p>{</p>
<p>Pazartesi=1,</p>
<p>Sali=2,</p>
<p>Carsamba=4,</p>
<p>Persembe=8,</p>
<p>Cuma=16,</p>
<p>Cumartesi=32,</p>
<p>Pazar=64</p>
<p>}</p>
<p>Mesela gelen gunler Salı günü ise Sınavınız var diye yazacak bir örnek fonksiyon tanımlayalım.Aşağıdaki gibi fonksiyonumuzu önce direkt günün değerini yazdırdığımızda ekrana 10 değeri gelecektir.Ancak biz fonksiyonun içine Salı ve Perşembe gününü beraber gönderdik.Aşağıdaki gibi direkt bir kullanım yaparsak sonuç bize Belirtilen günlerde sınavınız yok dönecektir</p>
<p>SinavGunlerGoster(Gunler.Sali | Gunler.Persembe);</p>
<p>public void SinavGunlerGoster(Gunler gun)</p>
<p>{</p>
<p>//MessageBox.Show(gun.ToString());Bunun çıktısı 10 olacaktır</p>
<p>if (gun == Gunler.Sali)</p>
<p>{</p>
<p>MessageBox.Show(&#8220;Belirtilen günlerden birinde sınavınız var&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>MessageBox.Show(&#8220;Belirtilen Günlerde Sınavınız Yok&#8221;);</p>
<p>}</p>
<p>}</p>
<p>Programın doğru çalışması için &amp; le bit işlemi yapmamız gerekmektedir</p>
<p>if ((gun &amp; Gunler.Sali) == Gunler.Sali)</p>
<p>{</p>
<p>Değerleri 2 ve katları vererek binary işlem yaparak doğru sonucu bulmuş olduk.</p>
<p>Mantık aşağıdaki gibidir</p>
<p>Gunler.Sali | Gunler.Persembe &#8212; Sali-2 Perşembe 8 binary formatta</p>
<p>010</p>
<p>100 veya işlemine soktuğumuzda 110 yapar ki bunun toplamı 10 dur</p>
<p>Ancak bunu tekrar &amp; le filtrelediğimizde(ve işlemine tuttuğumuzda) sadece Sali kalacak ve doğru sonucu bize verecektir (1 veya 0 &#8211;&gt; 1 ,1 ve 0 &#8211;&gt;0 döner)</p>
<p>Metod son olarak bu şekilde olacaktır.</p>
<p>public void SinavGunlerGoster(Gunler gun)</p>
<p>{</p>
<p>//MessageBox.Show(gun.ToString());</p>
<p>if ((gun &amp; Gunler.Sali) == Gunler.Sali)</p>
<p>{</p>
<p>MessageBox.Show(&#8220;Sınav Var&#8221;);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>MessageBox.Show(&#8220;Sınav Yok&#8221;);</p>
<p>}</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://bilgehanyildiz.com/2011/10/22/koddaenumdegiskenlerinicokluolarakkullanmakbitislemleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

