<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Damian Antonowicz</title>
	<atom:link href="http://blog.damianantonowicz.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.damianantonowicz.pl</link>
	<description>Yet another .NET blog :)</description>
	<lastBuildDate>Thu, 17 Nov 2011 18:05:24 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.damianantonowicz.pl' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/05753103a00868990954ac1f7e4350b6?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Damian Antonowicz</title>
		<link>http://blog.damianantonowicz.pl</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.damianantonowicz.pl/osd.xml" title="Damian Antonowicz" />
	<atom:link rel='hub' href='http://blog.damianantonowicz.pl/?pushpress=hub'/>
		<item>
		<title>WP7 &#8211; przydatne linki</title>
		<link>http://blog.damianantonowicz.pl/2011/07/08/wp7-przydatne-linki/</link>
		<comments>http://blog.damianantonowicz.pl/2011/07/08/wp7-przydatne-linki/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 14:27:28 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[programowanie w WP7]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[narzędzia]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">https://damianantonowicz.wordpress.com/?p=238</guid>
		<description><![CDATA[Od roku zajmuje się zawodowo pisaniem aplikacji pod platformę WP7. Od tego czasu natrafiłem na wiele przydatnych stron. Poniżej zamieszczam kilka przydatnych linków: Narzędzia: Colorful Expression &#8211; dodatek do Expression Blend dzięki, któremu możliwy będzie dostęp do Adobe Kuler z poziomu programu EQATEC Profiler &#8211; profiler dla WP7 XGENO.WindowsMarketPlace &#8211; aplikacja do ściągania plików XAP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=238&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/WP7-przydatne-linki-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2011%2F07%2F08%2Fwp7-przydatne-linki%2F" alt="Promuj" /></a></p>
<p>Od roku zajmuje się zawodowo pisaniem aplikacji pod platformę WP7. Od tego czasu natrafiłem na wiele przydatnych stron. Poniżej zamieszczam kilka przydatnych linków:</p>
<p><span id="more-238"></span></p>
<ul>
<li>Narzędzia:
<ul>
<li><a href="http://colorful.codeplex.com/">Colorful Expression</a> &#8211; dodatek do Expression Blend dzięki, któremu możliwy będzie dostęp do <a href="http://kuler.adobe.com/">Adobe Kuler</a> z poziomu programu</li>
<li><a href="http://www.eqatec.com/Profiler/">EQATEC Profiler</a> &#8211; profiler dla WP7</li>
<li><a href="http://forum.xda-developers.com/showthread.php?t=965700">XGENO.WindowsMarketPlace</a> &#8211; aplikacja do ściągania plików XAP darmowych aplikacji z Marketplace</li>
<li><a href="http://blogs.neudesic.com/post/2010/10/22/Memory-usage-monitor-and-visualizer-for-Windows-Phone-7.aspx">Memory usage monitor and visualizer for Windows Phone 7</a></li>
<li><a href="http://wp7sketchflow.codeplex.com/">SketchFlow Template for Windows Phone</a></li>
<li><a href="http://wp7designtemplates.codeplex.com/">Windows Phone 7 Design Templates</a></li>
</ul>
</li>
<li>Biblioteki i kontrolki:
<ul>
<li><a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a> &#8211; zestaw kontrolek</li>
<li><a href="http://coding4fun.codeplex.com/">Coding4Fun Tools</a> &#8211; zestaw kontrolek</li>
<li><a href="http://phoney.codeplex.com/">PhoneyTools</a> &#8211; zestaw kontrolek oraz klas pomocniczych</li>
<li><a href="http://www.telerik.com/products/windows-phone.aspx">RadControls for Windows Phone</a> &#8211; zestaw kontrolek</li>
<li><a title="ProfileItem" href="http://blogs.msdn.com/b/priozersk/archive/2011/10/25/profileitem-control-for-wp7.aspx">ProfileItem</a></li>
<li><a href="http://www.codeproject.com/KB/windows-phone-7/WindowsPhone7JumpLIst.aspx">Jump List Control</a></li>
<li><a href="http://www.scottlogic.co.uk/blog/colin/2011/03/metro-in-motion-part-2-peel-animations/">‘Peel’ Animations</a></li>
<li><a href="http://www.scottlogic.co.uk/blog/colin/2011/03/metro-in-motion-fluid-list-animation/">Fluid List Animation</a></li>
<li><a href="http://writeablebitmapex.codeplex.com/">WriteableBitmapEx</a> &#8211; rozszerzenia do klasy WriteableBitmap</li>
<li><a title="LazyListBox" href="http://blogs.msdn.com/b/ptorr/archive/2010/10/12/procrastination-ftw-lazylistbox-should-improve-your-scrolling-performance-and-responsiveness.aspx">LazyListBox</a> &#8211; kontrolka ListBox nadająca się do wyświetlania bardzo dużej ilości danych</li>
<li><a title="LowProfileImageLoader" href="http://blogs.msdn.com/b/delay/archive/2010/09/02/keep-a-low-profile-lowprofileimageloader-helps-the-windows-phone-7-ui-thread-stay-responsive-by-loading-images-in-the-background.aspx">LowProfileImageLoader</a> &#8211; kontrolka do wczytywania dużej ilości obrazków bez zawieszania GUI</li>
<li><a href="http://www.scottlogic.co.uk/blog/colin/2011/07/a-wp7-conversation-view/">Conversation View</a> &#8211; implementacja kontrolki wiadomości z huba &#8222;Messaging&#8221;</li>
<li><a href="http://create.msdn.com/en-us/education/catalog/article/pnhelp-wp7">Push Notification Server Side Helper Library</a> &#8211; biblioteka pomocnicza do wysyłania wiadomości Push</li>
<li><a href="http://create.msdn.com/en-us/education/catalog/article/nln-serv-wp7">Non-Linear Navigation Service</a> &#8211; serwis do nieliniowej nawigacji</li>
<li><a href="http://create.msdn.com/en-us/education/catalog/article/GPS-Emulator">Windows Phone GPS Emulator</a> &#8211; emulator GPS</li>
<li><a href="http://create.msdn.com/en-us/education/catalog/article/Recipe_Shake_Gesture_Library">Shake Gesture Library</a> &#8211; biblioteka do wykrywania gestów</li>
<li><a href="http://stackoverflow.com/questions/3811693/local-sql-database-support-for-windows-phone-7/3812090#3812090">lista dostępnych baz danych dla WP7</a></li>
<li><a href="http://watoolkitwp7.codeplex.com/">Windows Azure Toolkit for Windows Phone 7</a></li>
<li><a href="http://wp7contrib.codeplex.com/">WP7Contrib</a> &#8211; zestaw kontrolek oraz klas pomocniczych</li>
<li><a href="http://smf.codeplex.com/">Microsoft Media Platform: Player Framework</a> &#8211; biblioteka do odtwarzania video dostarczanego przez IIS Smooth Streaming</li>
<li><a title="Funq" href="http://funq.codeplex.com/">Funq</a> &#8211; kontener DI</li>
</ul>
</li>
<li>Książki:
<ul>
<li><a href="http://www.charlespetzold.com/phone/">Programming Windows Phone 7</a> &#8211; darmowy e-book napisany przez Charles&#8217;a Petzold&#8217;a</li>
</ul>
</li>
<li>Portale:
<ul>
<li><a href="http://create.msdn.com/en-US/">App Hub</a> &#8211; oficjalny portal dla programistów WP7 oraz Xbox360</li>
<li><a href="http://www.microsoft.com/design/toolbox/school/tutorials.aspx">.toolbox</a> &#8211; video tutoriale na temat tworzenia GUI w WP7</li>
<li><a href="http://www.windowsphonegeek.com/">WindowsPhoneGeek</a> &#8211; wiadomości, artykuły, przykłady</li>
<li><a href="http://forum.xda-developers.com/forumdisplay.php?f=605">Windows Phone 7 Development and Hacking</a> &#8211; podforum XDA o WP7</li>
<li><a href="http://www.silverlightshow.net/">SilverlightShow</a> &#8211; portal z wiadomościami o Silverlight</li>
<li><a href="http://wmpoweruser.com/">Windows Phone News</a> &#8211; głównie recenzje programów WP7</li>
<li><a href="http://www.wpcentral.com/">wpcentral</a> &#8211; j.w.</li>
<li><a href="http://www.1800pocketpc.com/">1800pocketpc</a> &#8211; j.w.</li>
<li><a href="http://wp7applist.com/">WP7 applist</a> &#8211; portal z listą dostępnych programów w Marketplace</li>
<li><a href="http://www.appsfuze.com/">appsfuze</a> &#8211; j.w.</li>
<li><a href="http://wp-7.pl/">wp-7.pl</a> &#8211; polski portal o WP7</li>
</ul>
</li>
<li>Blogi:
<ul>
<li><a href="http://windowsteamblog.com/windows_phone/b/windowsphone/">Windows Phone Blog</a> &#8211; oficjalny blog WP7</li>
<li><a href="http://blogs.msdn.com/b/slmperf/">Windows Phone Performance</a> &#8211; blog na temat wydajności w WP7</li>
<li><a href="http://geekswithblogs.net/WynApseTechnicalMusings/Default.aspx">WynApse</a> &#8211; MVP Dave Campbell podaje co parę dni mase przydatnych linków o Silverlight</li>
</ul>
</li>
<li>Przykładowe projekty:
<ul>
<li><a href="http://beamartian.codeplex.com/">NASA Be A Martian</a></li>
<li><a href="http://msdn.microsoft.com/en-gb/magazine/gg490347.aspx">Sudoku</a></li>
<li><a href="http://unitednations.codeplex.com/">United Nations News for Windows Phone 7</a></li>
<li><a href="http://vanguidewp7.codeplex.com/">VanGuide for Windows Phone 7</a></li>
<li><a href="http://sigurdsnorteland.wordpress.com/2010/09/19/wp7-samples-upgraded-to-rtm/">WP7 samples (coverflow, solitarie, weather,clock)</a></li>
<li><a href="http://www.silverlightplayground.org/post/2011/05/04/The-Reactive-Snake-for-Windows-Phone-7.aspx">The Reactive Snake for Windows Phone 7</a></li>
<li><a href="http://wp7guide.codeplex.com/">Windows Phone 7 Developer Guide</a></li>
<li><a href="http://www.telerik.com/products/windows-phone/getting-started/todolists.aspx">Telerik To-do App</a></li>
<li><a title="XAML Finance" href="http://www.codeproject.com/KB/windows-phone-7/XAMLFinance.aspx">XAML Finance</a></li>
</ul>
</li>
<li>Inne:
<ul>
<li><a href="http://wp7dev.wikispaces.com/">Windows Phone 7 Development Best Practices Wiki</a> &#8211; wiki o WP7. Kolejna porcja przydatnych linków</li>
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=1678">WP7 Training kit</a> &#8211; zestaw przykładów dla SL i XNA</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff431744%28VS.92%29.aspx">oficjalne przykłady dla WP7</a></li>
<li><a href="http://elektricforest.com/2010/11/19/windows-phone-7-vs-windows-phone-7/">Windows Phone 7 vs Windows Phone 7</a> &#8211; graficzne porównanie dostępnych telefonów z WP7</li>
<li><a href="http://blogs.msdn.com/b/lebanon/archive/2011/01/03/30-excellent-windows-phone-7-development-tutorials.aspx">lista 30 tutoriali o WP7</a></li>
<li><a href="http://wp7reviews.tomverhoeff.com/">Windows Phone 7 AppReviews</a> &#8211; strona, na której możemy sprawdzić oceny i komentarze dla każdej aplikacji (po podaniu ID) z każdego Marketplace</li>
<li><a title="zestaw ikonek" href="http://www.pedrolamas.com/windows-phone/windows-phone-application-bar-icons-en/">zestaw ikonek</a> #1</li>
<li><a title="zestaw ikonek #2" href="http://templarian.com/project_windows_phone_icons/">zestaw ikonek</a> #2</li>
</ul>
</li>
</ul>
<ul>To by było na tyle. Post będę aktualizować jeśli wpadną mi jakieś nowe linki. A może ktoś z was ma jakieś godne polecenia linki?</ul>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-wp7/'>programowanie w WP7</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/narzedzia/'>narzędzia</a>, <a href='http://blog.damianantonowicz.pl/tag/tips/'>tips</a>, <a href='http://blog.damianantonowicz.pl/tag/wp7/'>WP7</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=238&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2011/07/08/wp7-przydatne-linki/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2011%2F07%2F08%2Fwp7-przydatne-linki%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>
	</item>
		<item>
		<title>Podsumowanie konkursu &#8222;Daj się poznać&#8221;</title>
		<link>http://blog.damianantonowicz.pl/2010/11/28/podsumowanie-konkursu-daj-sie-poznac/</link>
		<comments>http://blog.damianantonowicz.pl/2010/11/28/podsumowanie-konkursu-daj-sie-poznac/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 11:38:13 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=223</guid>
		<description><![CDATA[W końcu udało mi się znaleźć chwilę czasu, żeby napisać małe podsumowanie. Konkurs zakończył się już prawie dwa tygodnie temu. Udało mi się wyrobić niezbędne minimum, żeby przejść dalej. Do dnia dzisiejszego blog miał 4 910 wizyt. W tym tygodniu zakończył się zamknięty etap głosowania. Również i tym etapie udało mi się przejść dalej. Dziękuje [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=223&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>W końcu udało mi się znaleźć chwilę czasu, żeby napisać małe podsumowanie. Konkurs <a href="http://www.maciejaniserowicz.com/post/2010/11/16/Konkurs-Daj-sie-poznac!-zakonczony.aspx">zakończył</a> się już prawie dwa tygodnie temu. Udało mi się wyrobić niezbędne minimum, żeby przejść dalej. Do dnia dzisiejszego blog miał 4 910 wizyt. W tym tygodniu <a href="http://www.maciejaniserowicz.com/post/2010/11/23/Publiczna-ankieta-Daj-Sie-Poznac-juz-dostepna!.aspx">zakończył</a> się zamknięty etap głosowania. Również i tym etapie udało mi się przejść dalej. Dziękuje wszystkim za oddane głosy na mój blog. Teraz odbywa się publiczne głosowanie, które zakończy się już niedługo.</p>
<p>Sam swój udział w konkursie uważam za średnio udany. Projekt co prawda ruszył się troszkę do przodu, ale nie jestem jednak zadowolony z postępów prac :) Jednak udało mi się zrobić jedna rzecz, na której najbardziej mi zależało &#8211; przenieść dane programu do bazy SQLite. Projekt będzie dalej rozwijany po zakończeniu konkursu. Mam zamiar wypuścić w końcu nowa wersję. Pisanie nowych postów na blogu również mam w planach. Blogowanie spodobało mi się po prostu :) Ogólnie jestem bardzo zadowolony, że wziąłem udział w konkursie. Poznałem dzięki temu sporo nowych narzędzi i technologii oraz spróbowałem swoich sił jako bloger.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=223&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/11/28/podsumowanie-konkursu-daj-sie-poznac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>
	</item>
		<item>
		<title>Entity Framework &#8211; POCO i Repository generator</title>
		<link>http://blog.damianantonowicz.pl/2010/11/07/entity-framework-poco-i-repository-generator/</link>
		<comments>http://blog.damianantonowicz.pl/2010/11/07/entity-framework-poco-i-repository-generator/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 22:22:08 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[POCO]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[T4]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=209</guid>
		<description><![CDATA[W Entity Framework 4 została dodana obsługa klas POCO. Samo pisanie takich klas oraz odpowiedniej klasy dziedziczącej po ObjectContext (klasa ta zapewnia &#34;most&#34; pomiędzy klasami POCO a EntityFramework) może być czasochłonne. Na ratunek przychodzi jednak POCO Entity Generator. Po jego instalacji wystarczy przejść do edytora naszego modelu, otworzyć menu kontekstowe, wybrać &#34;Add Code Generation Item&#8230;&#34;, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=209&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/Entity-Framework-POCO-i-Repository-generator-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F11%2F07%2Fentity-framework-poco-i-repository-generator%2F" /></a></p>
<p>W Entity Framework 4 została dodana obsługa klas <a href="http://en.wikipedia.org/wiki/Plain_Old_CLR_Object">POCO</a>. Samo pisanie takich klas oraz odpowiedniej klasy dziedziczącej po ObjectContext (klasa ta zapewnia &quot;most&quot; pomiędzy klasami POCO a EntityFramework) może być czasochłonne. Na ratunek przychodzi jednak <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/23df0450-5677-4926-96cc-173d02752313">POCO Entity Generator</a>. Po jego instalacji wystarczy przejść do edytora naszego modelu, otworzyć menu kontekstowe, wybrać &quot;Add Code Generation Item&#8230;&quot;, a następnie w nowo otwartym oknie wybrać &quot;ADO.NET POCO Entity Generator&quot;. Po krótkiej chwili w danym projekcie pojawią się nowe pliki: </p>
<p>  <span id="more-209"></span>  <a href="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_poco_generator.png"><img class="alignnone size-full wp-image-210" title="entity_framework_poco_generator" alt="" src="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_poco_generator.png?w=191&#038;h=426" width="191" height="426" /></a>
<p>W tych plikach zostały zawarte klasy POCO, stworzone na podstawie naszego modelu. Niestety przedstawiony generator ma jedną wadę. Musi być on umieszczony razem w jednym projekcie z modelem EF. Jeśli chcielibyśmy stworzyć prawdziwe klasy POCO, należałoby by je umieścić w osobnym projekcie &#8211; warstwie encji biznesowych.</p>
<p>Kolejnym pomocnym generatorem jest <a href="http://efrepository.codeplex.com/">Repository Generator</a>. Jak nazwa wskazuje generator ten tworzy klasy repozytoriów. Po ściągnięciu generator należy dodać go do projektu poprzez wywołanie z menu kontekstowego projektu opcji Add -&gt; Existing Item. Po dodaniu generatora, stworzone zostaną odpowiednie klasy repozytoriów:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_repository_generator.png"><img class="alignnone size-full wp-image-211" title="entity_framework_repository_generator" alt="" src="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_repository_generator.png?w=362&#038;h=768" width="362" height="768" /></a></p>
<p>Generator tworzony jedno repozytorium na daną klasę zawartą w modelu. Dla każdego repozytorium stworzone zostały dwa pliki. Jeden to plik zarządzany przez generator. Z kolei w drugim pliku możemy rozbudować dane repozytorium o nasze potrzeby i nie martwić się, że generator nadpisze zmiany.</p>
<p>Przedstawione w tym poście generatory z pewnością uprzyjemnią i przyśpieszą pracę z Entity Framework :)</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/entity-framework/'>Entity Framework</a>, <a href='http://blog.damianantonowicz.pl/tag/poco/'>POCO</a>, <a href='http://blog.damianantonowicz.pl/tag/repository/'>Repository</a>, <a href='http://blog.damianantonowicz.pl/tag/t4/'>T4</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/209/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/209/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/209/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=209&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/11/07/entity-framework-poco-i-repository-generator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F11%2F07%2Fentity-framework-poco-i-repository-generator%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_poco_generator.png" medium="image">
			<media:title type="html">entity_framework_poco_generator</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/11/entity_framework_repository_generator.png" medium="image">
			<media:title type="html">entity_framework_repository_generator</media:title>
		</media:content>
	</item>
		<item>
		<title>MEFedMVVM &#8211; integracja z Unity</title>
		<link>http://blog.damianantonowicz.pl/2010/11/07/mefedmvvm-integracja-z-unity/</link>
		<comments>http://blog.damianantonowicz.pl/2010/11/07/mefedmvvm-integracja-z-unity/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 21:52:30 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[IoC]]></category>
		<category><![CDATA[MEFContrib]]></category>
		<category><![CDATA[MEFedMVVM]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=206</guid>
		<description><![CDATA[Ostatnio interesowała mnie sprawa użycia Unity razem z biblioteka MEFedMVV. Czemu w ogóle rozważałem taka kwestię? Otóż MEF pozwala jedynie zdefiniować na dwa sposoby jak dany obiekt ma być tworzony &#8211; czy będzie to jeden obiekt, czy obiekt będzie tworzony za każdym razem. Jeśli chcielibyśmy stworzyć jakieś bardziej zaawansowane reguły tworzenia obiektów (np. tworzenie nowego [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=206&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/MEFedMVVM-integracja-z-Unity-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F11%2F07%2Fmefedmvvm-integracja-z-unity%2F" /></a></p>
<p>Ostatnio interesowała mnie sprawa użycia <a href="http://unity.codeplex.com/">Unity</a> razem z biblioteka <a href="http://mefedmvvm.codeplex.com/">MEFedMVV</a>. Czemu w ogóle rozważałem taka kwestię? Otóż MEF pozwala jedynie <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.partcreationpolicyattribute.aspx">zdefiniować</a> na dwa sposoby jak dany obiekt ma być tworzony &#8211; czy będzie to jeden obiekt, czy obiekt będzie tworzony za każdym razem. Jeśli chcielibyśmy stworzyć jakieś bardziej zaawansowane reguły tworzenia obiektów (np. tworzenie nowego obiektu tylko dla danego wątku), wtedy musimy posłużyć się już jakimś kontenerem IoC/DI.</p>
<p><span id="more-206"></span>Na szczęście ktoś już o tym pomyślał i została stworzona biblioteka <a href="http://mefcontrib.com/">MefContrib</a>. Pozwala ona m.in. na integrację Unity z MEF&#8217;em. Integracja może przebiegać na trzy różne sposoby:
<ul>
<li>MEF &quot;widzi&quot; typy zdefiniowane w Unity, ale Unity nie &quot;widzi&quot; typów zdefiniowanych w MEF&#8217;ie, </li>
<li>Unity &quot;widzi&quot; typy zdefiniowane w MEF&#8217;ie, ale MEF nie &quot;widzi&quot; typów zdefiniowanych w Unity, </li>
<li>MEF i Unity &quot;widzą&quot; wzajemnie zdefiniowane typy. </li>
</ul>
<p>Omówię tutaj przypadek ostatni. W celu dokonania takiej integracji należy wykonać jedynie 3 linijki kodu:</p>
<pre class="code"><span style="color:#2b91af;">UnityContainer </span>unityContainer = <span style="color:blue;">new </span><span style="color:#2b91af;">UnityContainer</span>();
<span style="color:#2b91af;">AssemblyCatalog </span>assemblyCatalog = <span style="color:blue;">new </span><span style="color:#2b91af;">AssemblyCatalog</span>(<span style="color:#2b91af;">Assembly</span>.GetExecutingAssembly());

unityContainer.RegisterCatalog(assemblyCatalog);</pre>
<p>I to właściwie wszystko co trzeba zrobić, żeby zintegrować MEF&#8217;a z Unity. Problemem pozostaje teraz jak to połączyć z biblioteką MEFedMVVM. Niestety MEFContrib oraz MEFedMVVM tworzą instancję klasy <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.compositioncontainer.aspx">CompositionContainer</a> wewnętrznie i nie ma możliwości aby przekazać taką instancję z zewnątrz. Jedyną opcję na konfigurację daję nam MEFedMVVM i jego klasa <a href="http://mefedmvvm.codeplex.com/SourceControl/changeset/view/61958#1271815">LocatorBootstrapper</a>. Trzeba tutaj do metody ApplyComposer przekazać instancję klasy, która implementuje interfejs IComposer. Całość kodu przedstawia się następująco:</p>
<pre class="code"><span style="color:blue;">public class </span><span style="color:#2b91af;">SampleComposer </span>: <span style="color:#2b91af;">IComposer
</span>{
    <span style="color:blue;">private </span><span style="color:#2b91af;">ComposablePartCatalog </span>catalog;
    <span style="color:blue;">private </span><span style="color:#2b91af;">IEnumerable</span>&lt;<span style="color:#2b91af;">ExportProvider</span>&gt; exports;

    <span style="color:blue;">public </span>SampleComposer(<span style="color:#2b91af;">ComposablePartCatalog </span>catalog, <span style="color:#2b91af;">IEnumerable</span>&lt;<span style="color:#2b91af;">ExportProvider</span>&gt; exports)
    {
        <span style="color:blue;">this</span>.catalog = catalog;
        <span style="color:blue;">this</span>.exports = exports;
    }

    <span style="color:blue;">public </span><span style="color:#2b91af;">IEnumerable</span>&lt;<span style="color:#2b91af;">ExportProvider</span>&gt; GetCustomExportProviders()
    {
        <span style="color:blue;">return this</span>.exports;
    }

    <span style="color:blue;">public </span><span style="color:#2b91af;">ComposablePartCatalog </span>InitializeContainer()
    {
        <span style="color:blue;">return this</span>.catalog;
    }
}

<span style="color:blue;">public partial class </span><span style="color:#2b91af;">App </span>: <span style="color:#2b91af;">Application
</span>{
    <span style="color:blue;">protected override void </span>OnStartup(<span style="color:#2b91af;">StartupEventArgs </span>e)
    {
        <span style="color:#2b91af;">UnityContainer </span>unityContainer = <span style="color:blue;">new </span><span style="color:#2b91af;">UnityContainer</span>();
        <span style="color:#2b91af;">AssemblyCatalog </span>assemblyCatalog = <span style="color:blue;">new </span><span style="color:#2b91af;">AssemblyCatalog</span>(<span style="color:#2b91af;">Assembly</span>.GetExecutingAssembly());

        unityContainer.RegisterCatalog(assemblyCatalog);
        unityContainer.RegisterType&lt;<span style="color:#2b91af;">IHelloWorldService</span>, <span style="color:#2b91af;">HelloWorldService</span>&gt;();

        <span style="color:#2b91af;">CompositionContainer </span>container = unityContainer.Resolve&lt;<span style="color:#2b91af;">CompositionContainer</span>&gt;();

        <span style="color:#2b91af;">SampleComposer </span>sampleComposer = <span style="color:blue;">new </span><span style="color:#2b91af;">SampleComposer</span>(assemblyCatalog, <span style="color:blue;">new </span><span style="color:#2b91af;">List</span>&lt;<span style="color:#2b91af;">ExportProvider</span>&gt;() { container });
        <span style="color:#2b91af;">LocatorBootstrapper</span>.ApplyComposer(sampleComposer);
    }
}</pre>
<p>Stworzyłem klasę SampleComposer, która zajmuje się przekazaniem zdefiniowanych typów w Unity do biblioteki MEFedMVVM. Zdefiniowana została też prosta klasa HelloWorldService, która wygląda następująco:</p>
<pre class="code"><span style="color:blue;">public class </span><span style="color:#2b91af;">HelloWorldService </span>: <span style="color:#2b91af;">IHelloWorldService
</span>{
    <span style="color:blue;">public </span>HelloWorldService()
    {

    }

    <span style="color:blue;">public string </span>GetMessage()
    {
        <span style="color:blue;">return </span><span style="color:#a31515;">&quot;Hello world at: &quot; </span>+ <span style="color:#2b91af;">DateTime</span>.Now.ToString();
    }
}</pre>
<p>Została ona użyta w klasie MainViewModel:</p>
<pre class="code">[<span style="color:#2b91af;">ExportViewModel</span>(<span style="color:#a31515;">&quot;MainViewModel&quot;</span>)]
[<span style="color:#2b91af;">PartCreationPolicy</span>(<span style="color:#2b91af;">CreationPolicy</span>.NonShared)]
<span style="color:blue;">public class </span><span style="color:#2b91af;">MainViewModel </span>: <span style="color:#2b91af;">INotifyPropertyChanged
</span>{
    <span style="color:blue;">private </span><span style="color:#2b91af;">IHelloWorldService </span>helloWorldService;
    <span style="color:blue;">private </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt; helloWorldCommand;

    <span style="color:blue;">public event </span><span style="color:#2b91af;">PropertyChangedEventHandler </span>PropertyChanged;

    <span style="color:blue;">public </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt; HelloWorldCommand
    {
        <span style="color:blue;">get </span>{ <span style="color:blue;">return this</span>.helloWorldCommand; }
    }

    <span style="color:blue;">public string </span>Message
    {
        <span style="color:blue;">get</span>;
        <span style="color:blue;">set</span>;
    }

    [<span style="color:#2b91af;">ImportingConstructor</span>]
    <span style="color:blue;">public </span>MainViewModel(<span style="color:#2b91af;">IHelloWorldService </span>helloWorldService)
    {
        <span style="color:blue;">this</span>.helloWorldService = helloWorldService;
        <span style="color:blue;">this</span>.helloWorldCommand = <span style="color:blue;">new </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt;(<span style="color:blue;">this</span>.ShowHelloWorld);
    }

    <span style="color:blue;">private void </span>ShowHelloWorld(<span style="color:blue;">object </span>param)
    {
        <span style="color:blue;">this</span>.Message = <span style="color:blue;">this</span>.helloWorldService.GetMessage();
        <span style="color:blue;">this</span>.OnPropertyChanged(<span style="color:#a31515;">&quot;Message&quot;</span>);
    }

    <span style="color:blue;">private void </span>OnPropertyChanged(<span style="color:blue;">string </span>propertyName)
    {
        <span style="color:blue;">if </span>(<span style="color:blue;">this</span>.PropertyChanged != <span style="color:blue;">null</span>)
            <span style="color:blue;">this</span>.PropertyChanged(<span style="color:blue;">this</span>, <span style="color:blue;">new </span><span style="color:#2b91af;">PropertyChangedEventArgs</span>(propertyName));
    }
}</pre>
<p>Konstruktor tej klasy został oznaczony atrybutem <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importingconstructorattribute.aspx">ImportingConstructor</a>, który informuje MEF&#8217;a o konieczności &quot;wstrzyknięcia&quot; odpowiednich instancji. Typ HelloWorldService został natomiast zarejestrowany w Unity. Jednak dzięki przedstawionej wcześniej integracji MEF &quot;widzi&quot; ten typ.</p>
<p>Przedstawiony w tym poście kod został stworzony na podstawie projektu z <a href="http://blog.damianantonowicz.pl/2010/10/31/cinch-i-mefedmvvm-aplikacja-mvvm-w-5-min/">wcześniejszego wpisu</a>. <a href="http://cid-8e873729cda83c4f.office.live.com/self.aspx/przyklady/MEFedMVVM%5E_Unity.zip">Tutaj</a> znajduje się jego rozbudowana wersja, stworzona na potrzeby tego wpisu.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/c/'>C#</a>, <a href='http://blog.damianantonowicz.pl/tag/di/'>DI</a>, <a href='http://blog.damianantonowicz.pl/tag/ioc/'>IoC</a>, <a href='http://blog.damianantonowicz.pl/tag/mefcontrib/'>MEFContrib</a>, <a href='http://blog.damianantonowicz.pl/tag/mefedmvvm/'>MEFedMVVM</a>, <a href='http://blog.damianantonowicz.pl/tag/mvvm/'>MVVM</a>, <a href='http://blog.damianantonowicz.pl/tag/unity/'>Unity</a>, <a href='http://blog.damianantonowicz.pl/tag/wpf/'>WPF</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=206&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/11/07/mefedmvvm-integracja-z-unity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F11%2F07%2Fmefedmvvm-integracja-z-unity%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>
	</item>
		<item>
		<title>NuGet &#8211; manager pakiet&#243;w dla .NET</title>
		<link>http://blog.damianantonowicz.pl/2010/10/31/nuget-manager-pakietow-dla-net/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/31/nuget-manager-pakietow-dla-net/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 18:53:51 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[narzędzia]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=195</guid>
		<description><![CDATA[NuGet jest managerem pakietów dla .NET. Projekt ma na celu ułatwienie dodawania zewnętrznych bibliotek do projektu.&#160; Ma to szczególne znaczenie jeśli biblioteka, której chcemy użyć, używa jeszcze innych bibliotek. Po instalacji NuGet z menu kontekstowego References będziemy mogli wybrać opcję &#34;Add Package Reference&#34;: Po wybraniu tej opcji, otworzone zostanie okno dodawania nowego pakietu: W repozytorium [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=195&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/NuGet-manager-pakiet%C3%B3w-dla-NET-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F31%2Fnuget-manager-pakietow-dla-net%2F" /></a></p>
<p><a href="http://nuget.codeplex.com/">NuGet</a> jest managerem pakietów dla .NET. Projekt ma na celu ułatwienie dodawania zewnętrznych bibliotek do projektu.&#160; Ma to szczególne znaczenie jeśli biblioteka, której chcemy użyć, używa jeszcze innych bibliotek.</p>
<p>  <span id="more-195"></span>
<p>Po instalacji NuGet z menu kontekstowego References będziemy mogli wybrać opcję &quot;Add Package Reference&quot;:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/nuget_context_menu.png"><img class="alignnone size-full wp-image-196" title="nuget_context_menu" alt="" src="http://damianantonowicz.files.wordpress.com/2010/10/nuget_context_menu.png?w=397&#038;h=230" width="397" height="230" /></a></p>
<p>Po wybraniu tej opcji, otworzone zostanie okno dodawania nowego pakietu:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/nuget_okienko_add_package_reference.png"><img class="alignnone size-full wp-image-197" title="nuget_okienko_add_package_reference" alt="" src="http://damianantonowicz.files.wordpress.com/2010/10/nuget_okienko_add_package_reference.png?w=630&#038;h=435" width="630" height="435" /></a></p>
<p>W repozytorium znajduje się całkiem spora liczba bibliotek. Właściwie są chyba tutaj wszystkie najbardziej popularne biblioteki. Ja na próbę dodałem referencję do biblioteki <a href="http://code.google.com/p/moq/">Moq</a>. W tym celu jedyne co musiałem zrobić to wcisnąć przycisk &quot;Install&quot; jak na powyższym obrazku. Po krótkiej chwili miałem już dodaną referencję do swojego projektu:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/sample_project_references.png"><img class="alignnone size-full wp-image-198" title="sample_project_references" alt="" src="http://damianantonowicz.files.wordpress.com/2010/10/sample_project_references.png?w=260&#038;h=313" width="260" height="313" /></a></p>
<p>Doszedł też nowy plik &quot;packages.config&quot;, który przechowuje informacje o dodanych bibliotekach. Sama biblioteka Moq została umieszczona w folderze &quot;packages&quot;, w głównym folderze projektu.</p>
<p>Dodawanie zewnętrznych bibliotek z NuGet staje się, więc szalenie proste :)</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/narzedzia/'>narzędzia</a>, <a href='http://blog.damianantonowicz.pl/category/narzedzia/visual-studio/'>Visual Studio</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/narzedzia/'>narzędzia</a>, <a href='http://blog.damianantonowicz.pl/tag/nuget/'>NuGet</a>, <a href='http://blog.damianantonowicz.pl/tag/visual-studio/'>Visual Studio</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=195&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/31/nuget-manager-pakietow-dla-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F31%2Fnuget-manager-pakietow-dla-net%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/nuget_context_menu.png" medium="image">
			<media:title type="html">nuget_context_menu</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/nuget_okienko_add_package_reference.png" medium="image">
			<media:title type="html">nuget_okienko_add_package_reference</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/sample_project_references.png" medium="image">
			<media:title type="html">sample_project_references</media:title>
		</media:content>
	</item>
		<item>
		<title>Cinch i MEFedMVVM &#8211; aplikacja MVVM w 5 min</title>
		<link>http://blog.damianantonowicz.pl/2010/10/31/cinch-i-mefedmvvm-aplikacja-mvvm-w-5-min/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/31/cinch-i-mefedmvvm-aplikacja-mvvm-w-5-min/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 15:20:13 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cinch]]></category>
		<category><![CDATA[MEFedMVVM]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=193</guid>
		<description><![CDATA[Ostatnio przeglądałem kilka bibliotek wspomagających tworzenie aplikacji z użyciem wzorca MVVM. Najbardziej do gustu przypadł mi Cinch w wersji V2. Framework ten działa razem z biblioteką MEFedMVVM. Użycie obu bibliotek jest bardzo proste. Najpierw tworzymy klasę, która będzie naszym modelem widoku: [ExportViewModel(&#34;MainViewModel&#34;)] [PartCreationPolicy(CreationPolicy.NonShared)] public class MainViewModel : INotifyPropertyChanged { private SimpleCommand&#60;object, object&#62; helloWorldCommand; public event [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=193&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/Cinch-i-MEFedMVVM-aplikacja-MVVM-w-5-min-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F31%2Fcinch-i-mefedmvvm-aplikacja-mvvm-w-5-min%2F" /></a></p>
<p>Ostatnio <a href="http://www.japf.fr/silverlight/mvvm/index.html">przeglądałem</a> kilka bibliotek wspomagających tworzenie aplikacji z użyciem wzorca <a href="http://en.wikipedia.org/wiki/Model_View_ViewModel">MVVM</a>. Najbardziej do gustu przypadł mi <a href="http://cinch.codeplex.com/">Cinch</a> w wersji V2. Framework ten działa razem z biblioteką <a href="http://mefedmvvm.codeplex.com/">MEFedMVVM</a>. Użycie obu bibliotek jest bardzo proste. Najpierw tworzymy klasę, która będzie naszym modelem widoku:</p>
<p> <span id="more-193"></span>
<pre class="code">[<span style="color:#2b91af;">ExportViewModel</span>(<span style="color:#a31515;">&quot;MainViewModel&quot;</span>)]
[<span style="color:#2b91af;">PartCreationPolicy</span>(<span style="color:#2b91af;">CreationPolicy</span>.NonShared)]
<span style="color:blue;">public class </span><span style="color:#2b91af;">MainViewModel </span>: <span style="color:#2b91af;">INotifyPropertyChanged
</span>{
    <span style="color:blue;">private </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt; helloWorldCommand;

    <span style="color:blue;">public event </span><span style="color:#2b91af;">PropertyChangedEventHandler </span>PropertyChanged;

    <span style="color:blue;">public </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt; HelloWorldCommand
    {
        <span style="color:blue;">get </span>{ <span style="color:blue;">return this</span>.helloWorldCommand; }
    }

    <span style="color:blue;">public string </span>Message
    {
        <span style="color:blue;">get</span>;
        <span style="color:blue;">set</span>;
    }

    <span style="color:blue;">public </span>MainViewModel()
    {
        <span style="color:blue;">this</span>.helloWorldCommand = <span style="color:blue;">new </span><span style="color:#2b91af;">SimpleCommand</span>&lt;<span style="color:blue;">object</span>, <span style="color:blue;">object</span>&gt;(<span style="color:blue;">this</span>.ShowHelloWorld);
    }

    <span style="color:blue;">private void </span>ShowHelloWorld(<span style="color:blue;">object </span>param)
    {
        <span style="color:blue;">this</span>.Message = <span style="color:#a31515;">&quot;Hello world at: &quot; </span>+ <span style="color:#2b91af;">DateTime</span>.Now.ToString();
        <span style="color:blue;">this</span>.OnPropertyChanged(<span style="color:#a31515;">&quot;Message&quot;</span>);
    }

    <span style="color:blue;">private void </span>OnPropertyChanged(<span style="color:blue;">string </span>propertyName)
    {
        <span style="color:blue;">if </span>(<span style="color:blue;">this</span>.PropertyChanged != <span style="color:blue;">null</span>)
            <span style="color:blue;">this</span>.PropertyChanged(<span style="color:blue;">this</span>, <span style="color:blue;">new </span><span style="color:#2b91af;">PropertyChangedEventArgs</span>(propertyName));
    }
}</pre>
<p>Do klasy należy dodać atrybut<a href="http://mefedmvvm.codeplex.com/SourceControl/changeset/view/61958#1271734"> ExportViewModel</a> i przekazać do niego nazwę modelu widoku. Atrybut ten jest zdefiniowany w MEFedMVVM. Biblioteka ta korzysta z <a href="http://mef.codeplex.com/">MEF</a>, dzięki czemu możemy użyć też atrybutu <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.partcreationpolicyattribute.partcreationpolicyattribute.aspx">PartCreationPolicy</a> i ustalić jak nasz model widoku ma być tworzony &#8211; czy to będzie jedna dzielona instancja czy model widoku będzie tworzony za każdym razem. Następnie zostało zdefiniowane jedno polecenie przy użyciu <a href="http://cinch.codeplex.com/SourceControl/changeset/view/52330#797005">SimpleCommand</a>, który jest zdefiniowany w Cinch. Teraz trzeba nasz model widoku powiązać z widokiem. Kod widoku wygląda u mnie tak:</p>
<pre class="code"><span style="color:blue;">&lt;</span><span style="color:#a31515;">Window </span><span style="color:red;">x</span><span style="color:blue;">:</span><span style="color:red;">Class</span><span style="color:blue;">=&quot;Cinch_sample.MainWindow&quot;
        </span><span style="color:red;">xmlns</span><span style="color:blue;">=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        </span><span style="color:red;">xmlns</span><span style="color:blue;">:</span><span style="color:red;">x</span><span style="color:blue;">=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
        </span><span style="color:red;">Title</span><span style="color:blue;">=&quot;MainWindow&quot;
        </span><span style="color:red;">Height</span><span style="color:blue;">=&quot;350&quot;
        </span><span style="color:red;">Width</span><span style="color:blue;">=&quot;525&quot;
        </span><span style="color:red;">xmlns</span><span style="color:blue;">:</span><span style="color:red;">meffed</span><span style="color:blue;">=&quot;http:\\www.codeplex.com\MEFedMVVM&quot;
        </span><span style="color:red;">meffed</span><span style="color:blue;">:</span><span style="color:red;">ViewModelLocator.ViewModel</span><span style="color:blue;">=&quot;MainViewModel&quot;&gt;
    &lt;</span><span style="color:#a31515;">Grid</span><span style="color:blue;">&gt;
        &lt;</span><span style="color:#a31515;">StackPanel</span><span style="color:blue;">&gt;
            &lt;</span><span style="color:#a31515;">TextBlock </span><span style="color:red;">Text</span><span style="color:blue;">=&quot;{</span><span style="color:#a31515;">Binding </span><span style="color:red;">Message</span><span style="color:blue;">}&quot; /&gt;
            &lt;</span><span style="color:#a31515;">Button </span><span style="color:red;">Command</span><span style="color:blue;">=&quot;{</span><span style="color:#a31515;">Binding </span><span style="color:red;">HelloWorldCommand</span><span style="color:blue;">}&quot; </span><span style="color:red;">Content</span><span style="color:blue;">=&quot;Show message&quot; /&gt;
        &lt;/</span><span style="color:#a31515;">StackPanel</span><span style="color:blue;">&gt;
    &lt;/</span><span style="color:#a31515;">Grid</span><span style="color:blue;">&gt;
&lt;/</span><span style="color:#a31515;">Window</span><span style="color:blue;">&gt;

</span></pre>
<p>Uwagę trzeba tutaj zwrócić na<a href="http://msdn.microsoft.com/en-us/library/ms749011.aspx"> attached property</a> ViewModelLocator.ViewModel. Podajemy w nim nawę modelu widoku, którego chcemy użyć.</p>
<p>I to już wszystko. Aplikacja jest już skonfigurowana i możemy korzystać z dobrodziejstw MVVM. <a href="http://cid-8e873729cda83c4f.office.live.com/self.aspx/przyklady/Cinch%5E_sample.zip">Tutaj</a> znajduje się omawiana w tym poście aplikacja.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/c/'>C#</a>, <a href='http://blog.damianantonowicz.pl/tag/cinch/'>Cinch</a>, <a href='http://blog.damianantonowicz.pl/tag/mefedmvvm/'>MEFedMVVM</a>, <a href='http://blog.damianantonowicz.pl/tag/mvvm/'>MVVM</a>, <a href='http://blog.damianantonowicz.pl/tag/wpf/'>WPF</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/193/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=193&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/31/cinch-i-mefedmvvm-aplikacja-mvvm-w-5-min/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F31%2Fcinch-i-mefedmvvm-aplikacja-mvvm-w-5-min%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>
	</item>
		<item>
		<title>VS10x Code Map</title>
		<link>http://blog.damianantonowicz.pl/2010/10/24/vs10x-code-map/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/24/vs10x-code-map/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 17:30:16 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[narzędzia]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[VS10x Code Map]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=187</guid>
		<description><![CDATA[VS10x Code Map jest dodatkiem do Visual Studio, który wyświetla graficzną reprezentację bieżącego pliku. W praktyce wygląda to następująco: Po lewej stronie znajduje się graficzna reprezentacja danego pliku. Możemy tutaj zauważyć podział ze względu na zdefiniowane regiony w klasie EditWindowViewModel. Domyślnie dodatek wyświetla elementy danego pliku tak jak są w nim zdefiniowane. Można to zachowanie [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=187&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a rev="vote-for" href="http://dotnetomaniak.pl/VS10x-Code-Map-Damian-Antonowicz"><img style="border:0;" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F24%2Fvs10x-code-map%2F" alt="Promuj" /></a></p>
<p><a href="http://visualstudiogallery.msdn.microsoft.com/en-us/1c54d1bd-d898-4705-903f-fa4a319b50f2?SRC=Home">VS10x Code Map</a> jest dodatkiem do Visual Studio, który wyświetla graficzną reprezentację bieżącego pliku. W praktyce wygląda to następująco:</p>
<p>  <span id="more-187"></span>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/vs10x_code_map.png"><img class="alignnone size-full wp-image-188" title="VS10x_Code_Map" src="http://damianantonowicz.files.wordpress.com/2010/10/vs10x_code_map.png?w=630&#038;h=505" alt="" width="630" height="505" /></a></p>
<p>Po lewej stronie znajduje się graficzna reprezentacja danego pliku. Możemy tutaj zauważyć podział ze względu na zdefiniowane regiony w klasie EditWindowViewModel. Domyślnie dodatek wyświetla elementy danego pliku tak jak są w nim zdefiniowane. Można to zachowanie zmienić poprzez opcje. Po kliknięciu na dany element zostaniemy przeniesieni do jego definicji w kodzie. Regiony można zwijać lub rozwijać &#8211; region zostanie również zwinięty/rozwinięty w pliku.</p>
<p>Dodatek zapamiętuje również historię nawigacji. Elementy, które odwiedziliśmy wcześniej są odpowiednio zaznaczone w pliku (jako jasno niebieskie tło) oraz w graficznej reprezentacji pliku (jako niebieska ikonka zegarka). Do historii odwiedzonych elementów możemy się dobrać poprzez opcję &#8222;Global Solution History&#8221; dostępna na samym dole dodatku.</p>
<p>Elementy w graficznej reprezentacji można również filtrować po nazwie. W tym celu należy najechać na samą górę dodatku, aż otworzy się odpowiednie pole tekstowe.</p>
<p>VS10x Code Map jest moim zdaniem bardzo pomocnym dodatkiem. Brakowało mi właśnie takiej graficznej reprezentacji dla bieżącego pliku. Teraz już to mam :) Jedynym minusem jest to, że nie możemy okna dodatku dowolnie przemieszczać. Jest on związany z oknem edytora pliku.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/narzedzia/'>narzędzia</a>, <a href='http://blog.damianantonowicz.pl/category/narzedzia/visual-studio/'>Visual Studio</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/narzedzia/'>narzędzia</a>, <a href='http://blog.damianantonowicz.pl/tag/visual-studio/'>Visual Studio</a>, <a href='http://blog.damianantonowicz.pl/tag/vs10x-code-map/'>VS10x Code Map</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=187&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/24/vs10x-code-map/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F24%2Fvs10x-code-map%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/vs10x_code_map.png" medium="image">
			<media:title type="html">VS10x_Code_Map</media:title>
		</media:content>
	</item>
		<item>
		<title>Entity Framework i śledzenie wykonywanych zapytań SQL</title>
		<link>http://blog.damianantonowicz.pl/2010/10/24/entity-framework-i-sledzenie-wykonywanych-zapytan-sql/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/24/entity-framework-i-sledzenie-wykonywanych-zapytan-sql/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 15:36:08 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[tracking SQL commands]]></category>
		<category><![CDATA[śledzenie zapytań SQL]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=182</guid>
		<description><![CDATA[Ostatnio interesowało mnie jakie właściwie zapytania SQL generuje Entity Framework. Chwila na Google i znalazłem Entity Framework Profiler. Najnowszą wersję można pobrać z tego miejsca. Użycie tego narzędzia jest banalnie proste. Najpierw musimy dodać referencję do biblioteki HibernatingRhinos.Profiler.Appender.dll. Następnie gdzieś w punkcie startowym aplikacji umieścić takie polecenie: I to wszystko jeśli chodzi o konfigurację. Wszystkie [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=182&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/Entity-Framework-i-%C5%9Bledzenie-wykonywanych-zapyta%C5%84-SQL-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F24%2Fentity-framework-i-sledzenie-wykonywanych-zapytan-sql%2F" alt="Promuj" /></a></p>
<p>Ostatnio interesowało mnie jakie właściwie zapytania SQL generuje Entity Framework. Chwila na Google i znalazłem <a href="http://efprof.com/">Entity Framework Profiler</a>. Najnowszą wersję można pobrać z tego <a href="http://builds.hibernatingrhinos.com/builds/EFProf">miejsca</a>. Użycie tego narzędzia jest banalnie proste. Najpierw musimy dodać referencję do biblioteki HibernatingRhinos.Profiler.Appender.dll. Następnie gdzieś w punkcie startowym aplikacji umieścić takie polecenie:</p>
<p><span id="more-182"></span></p>
<p><pre class="brush: csharp;">
HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();
</pre></p>
<p>I to wszystko jeśli chodzi o konfigurację. Wszystkie wykonywane zapytania będziemy mogli śledzić w aplikacji graficznej. Przykładowo mając taką metodę:</p>
<p><pre class="brush: csharp;">
public IList&lt;Hero&gt; GetHeroes()
{
return this.heroRepository.All().ToList();
}
</pre></p>
<p>Metoda (użyty został tutaj wzorzec Repository z poprzedniego <a href="http://blog.damianantonowicz.pl/2010/10/17/entity-framework-i-wzorzec-repository/">posta</a>) zwraca listę wszystkich bohaterów. Po wykonaniu tej metody w EF Profiler zobaczymy coś takiego:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_profiler.png"><img class="alignnone size-full wp-image-183" title="entity_framework_profiler" src="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_profiler.png?w=630&#038;h=420" alt="" width="630" height="420" /></a></p>
<p>Mamy, więc to co chcieliśmy &#8211; zapytanie SQL jakie jest wykonywane na bazie danych.</p>
<p>Niestety EF Profiler nie jest narzędziem darmowym. Skorzystałem tutaj z 30 dniowej wersji trial. W bardziej zaawansowane możliwości narzędzia nie wgłębiałem się zbytnio ponieważ interesował mnie tylko podgląd zapytań SQL.</p>
<p>Na szczęście istnieje darmowy projekt <a href="http://code.msdn.microsoft.com/EFProviderWrappers">EF Provider Wrappers</a>. Do dyspozycji mamy dwóch dostawców:</p>
<ul>
<li>EFTracingProvider &#8211; dostawca umożliwiający podgląd wykonywanych zapytań,</li>
<li>EFCachingProvider &#8211; dostawca umożliwiający cachowanie wyników zapytań.</li>
</ul>
<p>Ja skorzystałem oczywiście z tego pierwszego. W tym <a href="http://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-in-entity-framework-available-on-msdn-code-gallery.aspx">wpisie blogowym</a> znajduje się dobry tutorial omawiający użycie tych dostawców. Ja przedstawię tutaj tylko krótki poradnik jak uruchomić dostawcę EFTracingProvider.</p>
<ol>
<li>Ściągamy <a href="http://code.msdn.microsoft.com/EFProviderWrappers/Release/ProjectReleases.aspx?ReleaseId=4747">projekt dostawców</a>, a następnie go kompilujemy,</li>
<li>Dodajemy referencję bibliotek EFTracingProvider.dll oraz EFProviderWrapperToolkit.dll do naszego projektu.</li>
<li>Odnajdujemy plik ExtendedNorthwindEntities.cs (znajduje się on w projekcie EFProviderWrapperDemo) i kopiujemy do naszego projektu. Następnie przerabiamy go tak, żeby korzystał z naszej klasy ObjectContext oraz odpowiedniego connection string,</li>
<li>Dodajemy do pliku konfiguracyjnego app.config następujący wpis:<br />
<pre class="brush: xml;">
&lt;system.data&gt;
&lt;DbProviderFactories&gt;
&lt;add name=&quot;EF Tracing Data Provider&quot;
invariant=&quot;EFTracingProvider&quot;
description=&quot;Tracing Provider Wrapper&quot;
type=&quot;EFTracingProvider.EFTracingProviderFactory, EFTracingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b&quot; /&gt;
&lt;add name=&quot;EF Generic Provider Wrapper&quot;
invariant=&quot;EFProviderWrapper&quot;
description=&quot;Generic Provider Wrapper&quot;
type=&quot;EFProviderWrapperToolkit.EFProviderWrapperFactory, EFProviderWrapperToolkit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b&quot; /&gt;
&lt;/DbProviderFactories&gt;
&lt;/system.data&gt;
</pre></li>
<li>Wybieramy sposób logowania. Ja wybrałem wypisywanie zapytań SQL na konsole (kod ten należy umieścić gdzieś na starcie aplikacji):<br />

EFTracingProviderConfiguration.LogToConsole = true;
</li>
</ol>
<p>Po takiej konfiguracji wykonywane zapytania SQL będziemy mogli śledzić z poziomu Visual Studio w okienku Output. Dla metody GetHeroes przedstawionej wcześniej zostanie nam wyświetlone coś takiego:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/eftracingprovider_output.png"><img class="alignnone size-full wp-image-184" title="EFTracingProvider_output" src="http://damianantonowicz.files.wordpress.com/2010/10/eftracingprovider_output.png?w=432&#038;h=274" alt="" width="432" height="274" /></a></p>
<p>Jest to dokładnie to samo zapytanie, które widzieliśmy wcześniej w EF Profiler.</p>
<p>Śledzenie wykonywanych zapytań SQL podczas działania aplikacji jest ważne. Pozwoli to nam na bieżąco monitorować w jaki sposób dane są wyciągane z bazy danych. W razie potrzeby będziemy mogli zmienić sposób ich pobierania na bardziej optymalny.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/entity-framework/'>Entity Framework</a>, <a href='http://blog.damianantonowicz.pl/tag/tracking-sql-commands/'>tracking SQL commands</a>, <a href='http://blog.damianantonowicz.pl/tag/sledzenie-zapytan-sql/'>śledzenie zapytań SQL</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/182/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=182&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/24/entity-framework-i-sledzenie-wykonywanych-zapytan-sql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F24%2Fentity-framework-i-sledzenie-wykonywanych-zapytan-sql%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_profiler.png" medium="image">
			<media:title type="html">entity_framework_profiler</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/eftracingprovider_output.png" medium="image">
			<media:title type="html">EFTracingProvider_output</media:title>
		</media:content>
	</item>
		<item>
		<title>Entity Framework i wzorzec Repository</title>
		<link>http://blog.damianantonowicz.pl/2010/10/17/entity-framework-i-wzorzec-repository/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/17/entity-framework-i-wzorzec-repository/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 19:56:02 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[Repository]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=174</guid>
		<description><![CDATA[W tym poście przedstawię swoją implementację wzorca Repository z użyciem Entity Framework. Na początek zdefiniowałem interfejs IRepository: Następnie kolej na implementację klasy Repository: Zdefiniowałem też Extension Method dla klasy MetadataWorkspace, żeby być w stanie pobrać tzw. Entity Set Name: Przykładowe użycie stworzonej klasy może wyglądać np. w ten sposób: W tym tygodniu udało mi się [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=174&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/Entity-Framework-i-wzorzec-Repository-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F17%2Fentity-framework-i-wzorzec-repository%2F" alt="Promuj" /></a></p>
<p>W tym poście przedstawię swoją implementację wzorca <a href="http://martinfowler.com/eaaCatalog/repository.html">Repository</a> z użyciem Entity Framework. Na początek zdefiniowałem interfejs IRepository:</p>
<p><span id="more-174"></span></p>
<p><pre class="brush: csharp;">
public interface IRepository where T : EntityObject
{
IQueryable All();
T SingleOrDefault(Expression&lt;Func&lt;T, bool&gt;&gt; predicate);
void Add(T entity);
void Delete(T entity);
void Save();
}
</pre></p>
<p>Następnie kolej na implementację klasy Repository:</p>
<p><pre class="brush: csharp;">
public class Repository : IRepository where T : EntityObject
{
#region private members

private readonly ObjectContext context;

#endregion

#region constructors

public Repository(ObjectContext context)
{
this.context = context;
}

#endregion

#region public methods

#region IRepository Members

public IQueryable All()
{
return this.context.CreateQuery(
this.context.MetadataWorkspace
.GetEntitySetName(typeof(T).Name));
}

public T SingleOrDefault(Expression&lt;Func&lt;T, bool&gt;&gt; predicate)
{
return this.All().Where(predicate).FirstOrDefault();
}

public void Add(T entity)
{
this.context.AddObject(this.context.MetadataWorkspace
.GetEntitySetName(typeof(T).Name), entity);
}

public void Delete(T entity)
{
this.context.DeleteObject(entity);
}

public void Save()
{
this.context.SaveChanges();
}

#endregion

#endregion
}
</pre></p>
<p>Zdefiniowałem też Extension Method dla klasy MetadataWorkspace, żeby być w stanie pobrać tzw. Entity Set Name:</p>
<p><pre class="brush: csharp;">
public static class MetadataWorkspaceExtensions
{
public static string GetEntitySetName(this MetadataWorkspace mdw,
string entityName)
{
EntityContainer entityContainer =
mdw.GetItems(DataSpace.CSpace).First();

EntitySetBase entitySet =
entityContainer.BaseEntitySets.Where(e =&gt;
e.ElementType.Name.Equals(entityName))
.FirstOrDefault();

return entitySet.Name;
}
}
</pre></p>
<p>Przykładowe użycie stworzonej klasy może wyglądać np. w ten sposób:</p>
<p><pre class="brush: csharp;">
Hero hero = Hero.CreateHero(0, 0, 0, 0, &quot;Test hero name&quot;, 0);

DotBeerEntities entities = new DotBeerEntities();
IRepository heroRepository = new Repository(entities);
heroRepository.Add(hero);
heroRepository.Save();
</pre></p>
<p>W tym tygodniu udało mi się przenieść dane z plików XML do bazy danych SQLite. W nadchodzącym tygodniu postaram się zmienić logikę DotBeer&#8217;a tak żeby używała Entity Framework.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/entity-framework/'>Entity Framework</a>, <a href='http://blog.damianantonowicz.pl/tag/repository/'>Repository</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=174&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/17/entity-framework-i-wzorzec-repository/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F17%2Fentity-framework-i-wzorzec-repository%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>
	</item>
		<item>
		<title>Enity Framework Designer &#8211; StoreGeneratedPattern bug</title>
		<link>http://blog.damianantonowicz.pl/2010/10/16/enity-framework-designer-storegeneratedpattern-bug/</link>
		<comments>http://blog.damianantonowicz.pl/2010/10/16/enity-framework-designer-storegeneratedpattern-bug/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 21:58:58 +0000</pubDate>
		<dc:creator>Damian Antonowicz</dc:creator>
				<category><![CDATA[Daj się poznać]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[programowanie w .NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[Huagati DBML/EDMX Tools]]></category>
		<category><![CDATA[StoreGeneratedPattern]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[WinMerge]]></category>

		<guid isPermaLink="false">http://blog.damianantonowicz.pl/?p=163</guid>
		<description><![CDATA[W SQLite używam autoinkrementacji wartości kluczy głównych w tabelach. Domyślnie wygenerowany model przez generatora Entity Framework nie uwzględniał tego faktu. Próba wstawienia nowego rekordu do tabeli zakończy się po prostu błędem, ponieważ Entity Framework będzie chciał wstawić jakąś wartość. W celu naprawienia tej sytuacji musiałem w designerze ustawić pole StoreGeneratedPattern na Identity: Dzięki tej właściwość, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=163&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetomaniak.pl/Enity-Framework-Designer-StoreGeneratedPattern-bug-Damian-Antonowicz" rev="vote-for"><img style="border-width:0;" alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F16%2Fenity-framework-designer-storegeneratedpattern-bug%2F" /></a></p>
<p>W SQLite używam <a href="http://www.sqlite.org/faq.html#q1">autoinkrementacji</a> wartości kluczy głównych w tabelach. Domyślnie wygenerowany model przez generatora Entity Framework nie uwzględniał tego faktu. Próba wstawienia nowego rekordu do tabeli zakończy się po prostu błędem, ponieważ Entity Framework będzie chciał wstawić jakąś wartość. W celu naprawienia tej sytuacji musiałem w designerze ustawić pole <a href="http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.storegeneratedpattern.aspx">StoreGeneratedPattern</a> na Identity:</p>
<p>  <span id="more-163"></span>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_designer_storegenerationpattern.png"><img class="alignnone size-full wp-image-165" title="entity_framework_designer_storegenerationpattern" alt="" src="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_designer_storegenerationpattern.png?w=615&#038;h=783" width="615" height="783" /></a></p>
<p>Dzięki tej właściwość, EF zostawi wstawienie wartości kluczy głównych dla bazy danych. Wszystko byłoby pięknie gdyby nie pewien błąd. Designer EF w pliku <a href="http://msdn.microsoft.com/en-us/library/cc982042.aspx">EDMX </a>ustawia wartość StoreGeneratedPattern tylko w sekcji <a href="http://msdn.microsoft.com/en-us/library/bb399292.aspx">CSDL</a>, pomijając sekcję <a href="http://msdn.microsoft.com/en-us/library/bb399559.aspx">SSDL</a>. Błąd jest znany i został <a href="https://connect.microsoft.com/VisualStudio/feedback/details/505178/storegeneratedpattern-property-in-ado-net-entity-model-designer-sets-cdsl-annotation-but-not-ssdl-attribute?wa=wsignin1.0">zgłoszony</a> blisko rok temu na Microsoft Connect. Do dzisiaj jednak nie pojawiła się żadna łatka do Visual Studio, która naprawiałaby ten błąd. Sekcję SSDL niestety trzeba poprawić ręcznie. W tym celu należy otworzyć plik EDMX w edytorze XML:</p>
<p><a href="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_edmx_xml_editor.png"><img class="alignnone size-full wp-image-167" title="entity_framework_edmx_xml_editor" alt="" src="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_edmx_xml_editor.png?w=609&#038;h=880" width="609" height="880" /></a></p>
<p>Po otwarciu pliku w edytorze XML należy znaleźć odpowiedni fragment w sekcji SSDL i go poprawić. Rozwiązanie to ma jedną wadę. Wszystkie wprowadzone zmiany zostaną nadpisane jeśli zaktualizujemy model poprzez designera. Ponowne wprowadzanie poprawek do sekcji SSDL może być czasochłonne i zwyczajnie frustrujące przy dużej ilości encji. Co można, więc z&#160; tym zrobić? Możemy np. zainstalować dodatek do Visual Studio <a href="http://www.huagati.com/dbmltools/" target="_blank">Huagati DBML/EDMX Tools.</a> Dodatek pozwala m.in. na wybór, które części pliku EDMX mają zostać zaktualizowane. Możemy również skorzystać z opcji synchronizacji pomiędzy częścią CSDL i SSDL. Narzędzie rozwiązuje, więc omawiany problem w tym poście. <a href="http://huagati.blogspot.com/2010/07/introducing-model-comparer-for-entity.html">Tutaj</a> znajduję się krótkie wprowadzenie do tego dodatku. Wszystko byłoby pięknie gdyby nie jeden problem. Dodatek jest płatny. Za wersję Professional należy zapłacić 149.95 USD. Może kiedyś się skuszę. Na razie zastosowałem inne rozwiązanie.</p>
<p>Poprawną wersję pliku EDMX przechowuję w oddzielnym pliku jako kopię zapasową. Następnie po aktualizacji modelu używam <a href="http://winmerge.org/">WinMerge</a> do porównania zawartości kopii zapasowej z aktualnym plikiem EDMX. Odnajduję interesujące mnie różnice w plikach i kopiuję dane z kopii zapasowej do nowego pliku EDMX. Rozwiązanie może nie jest super wygodne, ale na pewno jest lepsze od ponownego poprawiania pliku EDMX. Z WinMerge różnice w obu plikach widać jak na dłoni.</p>
<br />Filed under: <a href='http://blog.damianantonowicz.pl/category/daj-sie-poznac/'>Daj się poznać</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/'>programowanie</a>, <a href='http://blog.damianantonowicz.pl/category/programowanie/programowanie-w-net/'>programowanie w .NET</a> Tagged: <a href='http://blog.damianantonowicz.pl/tag/net/'>.NET</a>, <a href='http://blog.damianantonowicz.pl/tag/entity-framework/'>Entity Framework</a>, <a href='http://blog.damianantonowicz.pl/tag/huagati-dbmledmx-tools/'>Huagati DBML/EDMX Tools</a>, <a href='http://blog.damianantonowicz.pl/tag/storegeneratedpattern/'>StoreGeneratedPattern</a>, <a href='http://blog.damianantonowicz.pl/tag/tips/'>tips</a>, <a href='http://blog.damianantonowicz.pl/tag/winmerge/'>WinMerge</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/damianantonowicz.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/damianantonowicz.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/damianantonowicz.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.damianantonowicz.pl&amp;blog=15190920&amp;post=163&amp;subd=damianantonowicz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.damianantonowicz.pl/2010/10/16/enity-framework-designer-storegeneratedpattern-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1072a3d2a717a68f20ebc7a8c61aff9?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">mendoza32</media:title>
		</media:content>

		<media:content url="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fblog.damianantonowicz.pl%2F2010%2F10%2F16%2Fenity-framework-designer-storegeneratedpattern-bug%2F" medium="image">
			<media:title type="html">Promuj</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_designer_storegenerationpattern.png" medium="image">
			<media:title type="html">entity_framework_designer_storegenerationpattern</media:title>
		</media:content>

		<media:content url="http://damianantonowicz.files.wordpress.com/2010/10/entity_framework_edmx_xml_editor.png" medium="image">
			<media:title type="html">entity_framework_edmx_xml_editor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
