<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Guru Stop</title><link>http://weblogs.asp.net/meligy/default.aspx</link><description>&lt;div style="font-size:0.9em;line-height:1.1em;"&gt;
Mohamed Meligy blogging .NET with an Egyptian perspective.
&lt;br /&gt;&lt;br /&gt;Mirror:&lt;a href="http://geekswithblogs.net/mohamed"&gt;GuruStop@GeeksWithBlogs&lt;/a&gt;&lt;/div&gt;</description><language>en</language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><geo:lat>30.0571</geo:lat><geo:long>31.2272</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>How to download videos from MSDN Chopsticks webcasts website</title><link>http://feedproxy.google.com/~r/GuruStop/~3/QOXTaoOhAyg/how-to-download-videos-from-msdn-chopsticks-webcasts-website.aspx</link><category>ASP.NET</category><category>Link List</category><category>Microsoft News</category><category>MVC</category><category>Silverlight</category><category>.NET</category><category>Misc</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Mon, 29 Jun 2009 10:31:59 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7136630</guid><description>&lt;p&gt;I was going to put this &lt;a href="http://twitter.com/mohamed_meligy"&gt;on twitter&lt;/a&gt; but it’s a bit longer to tweet.&lt;/p&gt;  &lt;p&gt;Last week I shared some videos on &lt;a href="http://www.google.com/reader/shared/08221036579558509505"&gt;Google Reader&lt;/a&gt; and twitter from Microsoft’s &lt;a href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx"&gt;MSDN Chopsticks video website&lt;/a&gt;. If you don’t know it, it’s a VERY nice videos website with much content on very interesting topics and very recent products as well as different experience levels of content.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx" href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx"&gt;&lt;strong&gt;http://www.microsoft.com/belux/msdn/nl/chopsticks/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Today, some other friends on twitter noticed the Chopsticks site and were wondering why it doesn’t allow downloading the videos (you can only view them online).&lt;/p&gt;  &lt;p&gt;Well, there is a work around to download the videos though:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Go to the video web page (you need to have Silverlight installed, and a .NET passport login, like Hotmail account).      &lt;br /&gt;I’m using a sample here: “Using ASP.NET MVC Model Binder” &lt;a title="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=798" href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=798"&gt;http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=798&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_578E598F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_29CCA298.png" width="469" height="375" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;[&lt;u&gt;Update:&lt;/u&gt; Skip this is step. Go to Step 3&amp;gt;1]&lt;/font&gt;&lt;/strong&gt;      &lt;br /&gt;If you hover on the video player, you find some icons/buttons that were not showing.       &lt;ol&gt;       &lt;li&gt;Click the 2nd icon/button from the left, which has the tip “EMBDE”.          &lt;br /&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_276DDCB0.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_564FCCED.png" width="496" height="391" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;When you click it, it shows like this:          &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_62317187.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_008B8CA4.png" width="498" height="389" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;Extract the URL in the text following “Embed this video”          &lt;br /&gt;In this example the text is:           &lt;blockquote&gt;&amp;lt;iframe src=&amp;quot;&lt;a href="http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=798&amp;amp;e=1&amp;quot;"&gt;http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=798&amp;amp;e=1&amp;quot;&lt;/a&gt; frameborder=&amp;quot;0&amp;quot; width=&amp;quot;493px&amp;quot; height=&amp;quot;385px&amp;quot; scrolling=&amp;quot;no&amp;quot; marginheight=&amp;quot;0&amp;quot; marginwidth=&amp;quot;0&amp;quot; &amp;gt;&amp;lt;/iframe&amp;gt;&lt;/blockquote&gt; so the URL is: &lt;a title="http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=798&amp;amp;e=1" href="http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=798&amp;amp;e=1"&gt;http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=798&amp;amp;e=1&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Go to the URL, when the page displays      &lt;ol&gt;       &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;[&lt;u&gt;Update:&lt;/u&gt; the next steps should work in the video page itself not having to get EMBED URL (skip previous STEP 2).               &lt;br /&gt;If the video URL is not found yet, try STEP 2]&lt;/font&gt;&lt;/strong&gt;          &lt;br /&gt;show the source code of that page.           &lt;br /&gt;In Firefox you do this by right clicking near the end of the page and choose “View Page Source” (if you right click up, it’ll show “Silverlight” instead)           &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_7A246A7B.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_283E1A9C.png" width="584" height="456" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;In the source look for a line that starts with:          &lt;blockquote&gt;&amp;lt;script type='text/javascript'&amp;gt;Silverlight.InstallAndCreateSilverlight(&amp;quot;1.0&amp;quot;,document.getElementById(&amp;quot;&lt;/blockquote&gt; In this example the code is: (found near the end of the &amp;lt;/form&amp;gt; tag)           &lt;blockquote&gt;&amp;lt;script type='text/javascript'&amp;gt;Silverlight.InstallAndCreateSilverlight(&amp;quot;1.0&amp;quot;,document.getElementById(&amp;quot;SilverlightInstallPromptHost&amp;quot;),createPlayerSilverlight(&amp;quot;http://mediadl.microsoft.com/MediaDL/WWW/B/belux/msdn/chopsticks/community/maartenballiauw-mvc-model-binder.wmv&amp;quot;, &amp;quot;http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=798&amp;quot;, true, true, 1, 538953 ));&amp;lt;/script&amp;gt; &lt;/blockquote&gt; This way you can extract the video URL as the value in between &lt;strong&gt;createPlayerSilverlight(&amp;quot;&lt;/strong&gt; and it’s closing &lt;strong&gt;&amp;quot;)&lt;/strong&gt;, you should find (based on this example) the URL: &lt;a title="http://mediadl.microsoft.com/MediaDL/WWW/B/belux/msdn/chopsticks/community/maartenballiauw-mvc-model-binder.wmv" href="http://mediadl.microsoft.com/MediaDL/WWW/B/belux/msdn/chopsticks/community/maartenballiauw-mvc-model-binder.wmv"&gt;http://mediadl.microsoft.com/MediaDL/WWW/B/belux/msdn/chopsticks/community/maartenballiauw-mvc-model-binder.wmv&lt;/a&gt;           &lt;br /&gt;This is the video URL. Go put it ion your favorite download manager, and enjoy watching the video anytime. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I hope this is useful for somebody!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:703d6322-c557-4fb8-95e3-cc63c80abd0a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MSDN" rel="tag"&gt;MSDN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ChopSticks" rel="tag"&gt;ChopSticks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Video" rel="tag"&gt;Video&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Videos" rel="tag"&gt;Videos&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Webcast" rel="tag"&gt;Webcast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Webcasts" rel="tag"&gt;Webcasts&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Technical" rel="tag"&gt;Technical&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASPnetMVC" rel="tag"&gt;ASPnetMVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net+MVC" rel="tag"&gt;asp.net MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Model+Binder" rel="tag"&gt;Model Binder&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ModelBinder" rel="tag"&gt;ModelBinder&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7136630" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=QOXTaoOhAyg:rYYwGgwjUqM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=QOXTaoOhAyg:rYYwGgwjUqM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=QOXTaoOhAyg:rYYwGgwjUqM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=QOXTaoOhAyg:rYYwGgwjUqM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=QOXTaoOhAyg:rYYwGgwjUqM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=QOXTaoOhAyg:rYYwGgwjUqM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=QOXTaoOhAyg:rYYwGgwjUqM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/QOXTaoOhAyg" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7136630</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7136630</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/06/29/how-to-download-videos-from-msdn-chopsticks-webcasts-website.aspx</feedburner:origLink></item><item><title>How to Change Your Firefox Search Provider to Microsoft Bing</title><link>http://feedproxy.google.com/~r/GuruStop/~3/qfXLQgguokQ/how-to-change-your-firefox-search-provider-to-microsoft-bing.aspx</link><category>Microsoft News</category><category>News</category><category>Misc</category><category>Google</category><category>Yahoo</category><category>Live</category><category>Bing</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Mon, 01 Jun 2009 00:09:00 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7104831</guid><description>&lt;ol&gt;   &lt;li&gt;Go to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/10434" mce_href="https://addons.mozilla.org/en-US/firefox/addon/10434"&gt;https://addons.mozilla.org/en-US/firefox/addon/10434&lt;/a&gt; ( &lt;font color="#cc0000" size="3"&gt;&lt;u&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/u&gt;&lt;/font&gt; This is the only official provider made by Microsoft itself)&lt;br&gt;This is the URL I originally posted (from which the below screenshots come): &lt;strike&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/12205" title="https://addons.mozilla.org/en-US/firefox/addon/12205" mce_href="https://addons.mozilla.org/en-US/firefox/addon/12205"&gt;https://addons.mozilla.org/en-US/firefox/addon/12205&lt;/a&gt;&lt;/strike&gt; - Of course you are recommended to go to the official URL above.&lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_6409B3AF.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_6409B3AF.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_5ABD52A1.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_5ABD52A1.png" border="0" height="302" width="590"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Check “Let me install this experimental add-on” and click “Add to FireFox”     &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_406CC3B0.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_406CC3B0.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_39A99460.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_39A99460.png" border="0" height="254" width="587"&gt;&lt;/a&gt;       &lt;br&gt;Now the add-in is there.&lt;/li&gt;    &lt;li&gt;In the search bar, click the little triangle at the left and choose Bing.     &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_0BAC1BDB.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_0BAC1BDB.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_6EE280F8.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_6EE280F8.png" border="0" height="52" width="198"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;In your browser it may not the first item nor bold as in the pic here. Click “Manage Search Engines…”.     &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_1DE4BCD0.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_1DE4BCD0.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_61001530.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_61001530.png" border="0" height="220" width="240"&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;    &lt;li&gt;Click “Move Up” to have it the first item     &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_16B55A8B.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_16B55A8B.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_55C66519.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_55C66519.png" border="0" height="223" width="244"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;If you have Google Toolbar, you need to check more settings:&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Go to Google Settings. In the “Layout” tab, make sure to choose “Classic Toolbar Layout”. Save that.       &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_6368FB54.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_6368FB54.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_2A41F885.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_2A41F885.png" border="0" height="313" width="205"&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/meligy/image_1618B62F.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_1618B62F.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_4E47077A.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_4E47077A.png" border="0" height="313" width="281"&gt;&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;In Firefox address bar, type:       &lt;br&gt;&lt;b&gt;about:config&lt;/b&gt;        &lt;br&gt;without “http://” or anything, and click the button that appears then.        &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_29199741.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_29199741.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_57436D2E.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_57436D2E.png" border="0" height="195" width="344"&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt; In the “Filter” field type: “browser.search.defaultenginename”       &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_2E77E218.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_2E77E218.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_03039B51.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_03039B51.png" border="0" height="199" width="354"&gt;&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Double click the only result that will show, you get a message box where you should&amp;nbsp; enter text. Replace the existing text “Google” with “Bing” instead, and click OK.       &lt;br&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_708B24CE.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_708B24CE.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_3A5986B2.png" style="border: 0px none ; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_3A5986B2.png" border="0" height="203" width="358"&gt;&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Close the window. Your default provider is set.&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Have fun :-)&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ffd659ce-a585-443c-97f0-8dc736e35252" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" mce_href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firefox" mce_href="http://technorati.com/tags/Firefox" rel="tag"&gt;Firefox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bing" mce_href="http://technorati.com/tags/Bing" rel="tag"&gt;Bing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live+Search" mce_href="http://technorati.com/tags/Live+Search" rel="tag"&gt;Live Search&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live" mce_href="http://technorati.com/tags/Live" rel="tag"&gt;Live&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google" mce_href="http://technorati.com/tags/Google" rel="tag"&gt;Google&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google+Toolbar" mce_href="http://technorati.com/tags/Google+Toolbar" rel="tag"&gt;Google Toolbar&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firefox+Extensions" mce_href="http://technorati.com/tags/Firefox+Extensions" rel="tag"&gt;Firefox Extensions&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7104831" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=qfXLQgguokQ:n30rqUnxSHU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=qfXLQgguokQ:n30rqUnxSHU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=qfXLQgguokQ:n30rqUnxSHU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=qfXLQgguokQ:n30rqUnxSHU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=qfXLQgguokQ:n30rqUnxSHU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=qfXLQgguokQ:n30rqUnxSHU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=qfXLQgguokQ:n30rqUnxSHU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/qfXLQgguokQ" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7104831</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7104831</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/06/01/how-to-change-your-firefox-search-provider-to-microsoft-bing.aspx</feedburner:origLink></item><item><title>Quick Hint: www.bing.com is Live (Microsoft New Search/Decision Engine)</title><link>http://feedproxy.google.com/~r/GuruStop/~3/eWYfEoihVio/quick-hint-www-bing-com-is-live-microsoft-new-search-decision-engine.aspx</link><category>Microsoft News</category><category>News</category><category>Misc</category><category>Google</category><category>Web 2.0</category><category>Live</category><category>Bing</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Sun, 31 May 2009 22:00:54 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7104761</guid><description>&lt;p&gt;If you are not on Twitter, let me spread this by &lt;a href="http://www.twitter.com/bing"&gt;@bing&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Ladies and Gentlemen, &lt;a href="http://www.bing.com"&gt;www.bing.com&lt;/a&gt; is live. :) (rollouts will continue however to partners and other mkts, more to come) ^betsy&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt;, if you don’t know, is Microsoft’s new search engine, also known as “Decision Engine” since it has features that help answer what you are wondering about rather than just display links.&lt;/p&gt;  &lt;p&gt;For those wondering about Live Search. I think I read somewhere that both search engines will remain there for a while, then Live will be brought out to &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt;. Nothing to confirm yet though. In &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt; homepage you read “Live Search is Evolving. Welcome to Bing”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For quick video of what &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt; can give to you, check &lt;a href="http://www.decisionengine.com/Default.html"&gt;this&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For an official introduction about what &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt; is, check &lt;a href="http://www.discoverbing.com/welcome/"&gt;this&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0436525d-3141-49f0-85c0-f8e97775b668" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live" rel="tag"&gt;Live&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live+Search" rel="tag"&gt;Live Search&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google" rel="tag"&gt;Google&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Search+Engine" rel="tag"&gt;Search Engine&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bing" rel="tag"&gt;Bing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7104761" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=eWYfEoihVio:ymHpeucoIS4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=eWYfEoihVio:ymHpeucoIS4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=eWYfEoihVio:ymHpeucoIS4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=eWYfEoihVio:ymHpeucoIS4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=eWYfEoihVio:ymHpeucoIS4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=eWYfEoihVio:ymHpeucoIS4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=eWYfEoihVio:ymHpeucoIS4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/eWYfEoihVio" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7104761</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7104761</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/06/01/quick-hint-www-bing-com-is-live-microsoft-new-search-decision-engine.aspx</feedburner:origLink></item><item><title>See you all in dotNETwork May 09 Gathering in Egypt, Lesser known .NET Enterprise Patterns &amp; Practices</title><link>http://feedproxy.google.com/~r/GuruStop/~3/wZVQKNA1b8c/see-you-all-in-dotnetwork-may-09-gathering-in-egypt-lesser-known-net-enterprise-patterns-amp-practices.aspx</link><category>OOP</category><category>Patterns</category><category>dotNETwork</category><category>Local Events</category><category>Architecture</category><category>.NET</category><category>News</category><category>Domain Driven Design</category><category>DI &amp;amp; IoC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Fri, 22 May 2009 08:19:00 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7094306</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table align="center" border="0" cellpadding="2" cellspacing="0" width="75%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="font-weight: bold; color: rgb(204, 255, 255); background-color: rgb(204, 51, 0);" valign="top"&gt;         &lt;h3 align="center"&gt;&lt;u&gt;IMPORTANT UPDATE&lt;/u&gt;&lt;/h3&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border: 1px solid ;" valign="top"&gt;         &lt;p align="justify"&gt;There was a sudden last-minutes issue with the transportation / flights configuration that prevented me from making it to Cairo. I’ll be unfortunately missing out this event. M. Smay my friend will be a great backup with all the additional details he has to provide about his session content as well as an open session for the convenience of all of you.&lt;/p&gt;          &lt;p align="justify"&gt;Sorry for missing out. I had to. I’m working with dotNETwork to re-organize my session as part of June 2009 gathering, but this is gonna be another story!&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Most of you already know I have moved recently from Cairo to Abu Dhabi. What only a selected set of you are aware of, is that I am still having my heart all set for the developer community in Egypt and still communicating with many of them &lt;a href="http://weblogs.asp.net/meligy/archive/2009/03/19/hey-follow-me-on-twitter.aspx" mce_href="http://weblogs.asp.net/meligy/archive/2009/03/19/hey-follow-me-on-twitter.aspx"&gt;&lt;b&gt;via Twitter&lt;/b&gt;&lt;/a&gt;; not only that developers in Abu Dhabi are not into spending time in gatherings or anything than doing work and surviving, but also because I have made the only long lasting and fulfilling friends relationships with the key persons that I see in the different communities, especially my old friends from Microsoft MDC and ArabTeam2000, Demo Day attendees (who still talk to me since 2007), and - of course – dotNETwork, admins, speakers, and participants (who are much more than just attendees).&lt;/p&gt;  &lt;h3 align="center"&gt;&lt;b&gt;&lt;a href="http://www.eventbrite.com/event/325439398/fbnews" mce_href="http://www.eventbrite.com/event/325439398/fbnews"&gt;Fridays City Stars 23rd of May 10:00 AM - 01:00 PM&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;This Saturday&lt;/b&gt; isA I’ll be giving a session that relates to one of my beloved topics in development. Here is the information of the session:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h4&gt;Session Title&lt;/h4&gt;    &lt;h4&gt;&lt;b&gt;Lesser known .NET Enterprise Patterns &amp;amp; Practices&lt;/b&gt;&lt;/h4&gt;    &lt;h4&gt;Tag Line&lt;/h4&gt;    &lt;p&gt;Is your mind ready? Booting up journey in enterprise patterns &amp;amp; practices in .NET&lt;/p&gt;    &lt;h4&gt;Session Summary&lt;/h4&gt;    &lt;p&gt;Through an illustration and a thoughtful discussion we are going to see how to go with our applications to the next level, leveraging ease of maintenance, integration points, and scalability out of the box; showing sample enterprise patterns and best practices that are very popular in many development platforms but are rarely used or even known for typical .NET developers&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The session will be like April’s session in &lt;b&gt;Fridays City Stars, Nasr City&lt;/b&gt;. If you want to know what that is, this is because the Canadian University in Egypt&amp;nbsp; has stopped all activities in Saturday temporarily for reducing cost; you know, the crisis!&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Agenda, date and location&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;&lt;b&gt;Lesser known .NET Enterprise Patterns &amp;amp; Practices          &lt;br&gt;&lt;/b&gt;&lt;i&gt;by Mohamed Meligy&lt;/i&gt;&lt;i&gt; - Information Analyst, .NET Technologies – (Injazat Data Systems, Abu Dhabi)&lt;/i&gt;&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;&lt;b&gt;A lap around Visual Studio 2010&lt;/b&gt;         &lt;br&gt;&lt;i&gt;by Mohamed Samy - Technical Architect (iSource Egypt)&lt;/i&gt;&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;b&gt;   &lt;p&gt;     &lt;br&gt;&lt;/p&gt; &lt;/b&gt;  &lt;h3 align="center"&gt;&lt;b&gt;&lt;a href="http://www.eventbrite.com/event/325439398/fbnews" mce_href="http://www.eventbrite.com/event/325439398/fbnews"&gt;Fridays City Stars 23rd of May 10:00 AM - 01:00 PM&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Have you noticed something? Yes, my closest friend and one of the most lasting / oldest friend in this life, and in the field of course, &lt;b&gt;Mohamed Samy&lt;/b&gt;, will be giving a session the same day. HE is such a true guru, and I fear everything ‘m going to say may look very pale compared to what he has to say about VS 2010.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;By the way, the attendance will require you to only pay 19 EGP or so– for a sandwich or meal that YOU eat (they have discounts for attendees). This is the host requirement and dotNETwork has NOTHING to do with it. After all, the only available host is now a commercial place. If you can help dotNETwork host the sessions in a completely free place, please contact anyone from dotNETwork and help get that done. PLEASE.&lt;/p&gt;  &lt;p&gt;Anyway, I think 20 EGP for something YOU get within the day is not very little but not much also. I saw guys paying the same to the cafe near the University when it was hosted there.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;&lt;u&gt;Please be there.&lt;/u&gt;&lt;/b&gt; I know everybody was too busy to do right publicity of this event, and I myself am writing this very shortly before the event day, but, I’ll not be able to come back to Egypt even every few months, so, this time is very rare for me. Please let me meet the most of you who can make it. This is a personal request, to my true friends. period&lt;/h4&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Related Sites&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.eventbrite.com/event/325439398/fbnews" mce_href="http://www.eventbrite.com/event/325439398/fbnews"&gt;&lt;b&gt;Event Registration Page – Register Now&lt;/b&gt;&lt;/a&gt;&lt;b&gt; (Optional)&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnetwork.org/" mce_href="http://dotnetwork.org/"&gt;&lt;b&gt;Official dotNETwork Website&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/profile.php?id=544815169#/group.php?gid=2409268236" mce_href="http://www.facebook.com/profile.php?id=544815169#/group.php?gid=2409268236"&gt;dotNETwork Facebook Group&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/dotnetworkorg/" mce_href="http://tech.groups.yahoo.com/group/dotnetworkorg/"&gt;dotNETwork Yahoo Group&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/Mohamed/category/1351.aspx" mce_href="http://geekswithblogs.net/Mohamed/category/1351.aspx"&gt;&lt;b&gt;Earlier "Local Events" Posts in My Blogs&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.slideshare.net/Mohamed_Meligy/slideshows" mce_href="http://www.slideshare.net/Mohamed_Meligy/slideshows"&gt;&lt;b&gt;My Other Presentations on SlideShare&lt;/b&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e8d2aa3f-0747-40f5-87a3-18ae6b51f53f" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/OOP" mce_href="http://technorati.com/tags/OOP" rel="tag"&gt;OOP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Patterns" mce_href="http://technorati.com/tags/Patterns" rel="tag"&gt;Patterns&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotNETwork" mce_href="http://technorati.com/tags/dotNETwork" rel="tag"&gt;dotNETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Local+Events" mce_href="http://technorati.com/tags/Local+Events" rel="tag"&gt;Local Events&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MDC" mce_href="http://technorati.com/tags/MDC" rel="tag"&gt;MDC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DI+%26+IoC" mce_href="http://technorati.com/tags/DI+%26+IoC" rel="tag"&gt;DI &amp;amp; IoC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" mce_href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/News" mce_href="http://technorati.com/tags/News" rel="tag"&gt;News&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNK" mce_href="http://technorati.com/tags/DNK" rel="tag"&gt;DNK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Enterprise" mce_href="http://technorati.com/tags/Enterprise" rel="tag"&gt;Enterprise&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Enterprise+Patterns" mce_href="http://technorati.com/tags/Enterprise+Patterns" rel="tag"&gt;Enterprise Patterns&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Patterns+and+Practices" mce_href="http://technorati.com/tags/Patterns+and+Practices" rel="tag"&gt;Patterns and Practices&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS2010" mce_href="http://technorati.com/tags/VS2010" rel="tag"&gt;VS2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS+2010" mce_href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studo" mce_href="http://technorati.com/tags/Visual+Studo" rel="tag"&gt;Visual Studo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS" mce_href="http://technorati.com/tags/VS" rel="tag"&gt;VS&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7094306" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=wZVQKNA1b8c:NP1PVSxJKDc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=wZVQKNA1b8c:NP1PVSxJKDc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=wZVQKNA1b8c:NP1PVSxJKDc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=wZVQKNA1b8c:NP1PVSxJKDc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=wZVQKNA1b8c:NP1PVSxJKDc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=wZVQKNA1b8c:NP1PVSxJKDc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=wZVQKNA1b8c:NP1PVSxJKDc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/wZVQKNA1b8c" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7094306</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7094306</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/05/22/see-you-all-in-dotnetwork-may-09-gathering-in-egypt-lesser-known-net-enterprise-patterns-amp-practices.aspx</feedburner:origLink></item><item><title>Quick Hints: Solving VS 2010 Beta1 only showing Splash Screen; AnkhSVN works; R# in June</title><link>http://feedproxy.google.com/~r/GuruStop/~3/lNZrAp2MkUY/quick-hints-solving-vs-2010-beta1-only-showing-splash-screen-ankhsvn-works-r-in-june.aspx</link><category>Visual Studio</category><category>Resharper</category><category>.NET FAQ</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Wed, 20 May 2009 01:43:56 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7093397</guid><description>&lt;p&gt;Check the add-ins you installed before Visual Studio 2010 if you enabled VS 2010 integration in them. Particularly TestDriven.NET is the problem. Go to “Add Remove Programs” / “Programs and Features”, find Test Driven.NET, click “Change”, and then modify it to remove VS2010 integration from it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Also, if you are using AnkhSVN, make sure to download a new latest &lt;a href="http://ankhsvn.open.collab.net/daily/"&gt;daily update&lt;/a&gt; build and use that, otherwise, you’ll get an exception when starting VS 2010.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’ll be writing more about VSTS 2010 and .NET 4.0 in the next coming months (if God will), since now I can run it :D (before, I did not have the fix that extends the Virtual Machine expiration after January 1st, 2009).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;BTW, for R# deep lovers (like me), Resharper for VS 2010 is &lt;a href="http://blogs.jetbrains.com/dotnet/2009/05/preview-of-resharper-for-visual-studio-2010-coming-soon/"&gt;expected next month&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Have fun, please!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1579c5a2-11ec-4ca4-860f-6784910f94e4" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VS" rel="tag"&gt;VS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VisualStudio" rel="tag"&gt;VisualStudio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS2010" rel="tag"&gt;VS2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS10" rel="tag"&gt;VS10&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2010" rel="tag"&gt;Visual Studio 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VisualStudio2010" rel="tag"&gt;VisualStudio2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VisualStudio+2010" rel="tag"&gt;VisualStudio 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TestDriven.NET" rel="tag"&gt;TestDriven.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TDD" rel="tag"&gt;TDD&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AnkhSVN" rel="tag"&gt;AnkhSVN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ankh+SVN" rel="tag"&gt;Ankh SVN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Resharper" rel="tag"&gt;Resharper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/R%23" rel="tag"&gt;R#&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7093397" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=lNZrAp2MkUY:XYB0wIX2Cco:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=lNZrAp2MkUY:XYB0wIX2Cco:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=lNZrAp2MkUY:XYB0wIX2Cco:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=lNZrAp2MkUY:XYB0wIX2Cco:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=lNZrAp2MkUY:XYB0wIX2Cco:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=lNZrAp2MkUY:XYB0wIX2Cco:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=lNZrAp2MkUY:XYB0wIX2Cco:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/lNZrAp2MkUY" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7093397</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7093397</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/05/20/quick-hints-solving-vs-2010-beta1-only-showing-splash-screen-ankhsvn-works-r-in-june.aspx</feedburner:origLink></item><item><title>Product Announcement: Spreading the word, Typemock ASP.NET Bundle for Unit Testing</title><link>http://feedproxy.google.com/~r/GuruStop/~3/k2iIHIhYNPo/product-announcement-spreading-the-word-typemock-asp-net-bundle-for-unit-testing.aspx</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Mon, 18 May 2009 17:33:29 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7092437</guid><description>&lt;p&gt;Typemock guys, the guys behind the only mocking framework that can apply mocking in complex environments like Microsoft SharePoint, are releasing a new Product,, ASP.NET Bundle.&lt;/p&gt;  &lt;p&gt;Here is what they’re saying about it:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Typemock is launching a new product for ASP.NET developers – the &lt;strong&gt;ASP.NET Bundle&lt;/strong&gt; - and for the launch will be giving out &lt;strong&gt;FREE licenses&lt;/strong&gt; to bloggers and their readers.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both &lt;a href="http://www.typemock.com/"&gt;Typemock Isolator&lt;/a&gt;, a &lt;a href="http://www.typemock.com/"&gt;unit test&lt;/a&gt; tool and &lt;a href="http://sm-art.biz/Ivonna.aspx"&gt;Ivonna&lt;/a&gt;, the Isolator add-on for &lt;a href="http://sm-art.biz/Ivonna.aspx"&gt;ASP.NET unit testing&lt;/a&gt;, for a bargain price.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Typemock Isolator is a leading &lt;a href="http://www.typemock.com/"&gt;.NET unit testing&lt;/a&gt; tool (C# and VB.NET) for many ‘hard to test’ technologies such as &lt;a href="http://typemock.com/sharepointpage.php"&gt;SharePoint&lt;/a&gt;, &lt;a href="http://www.typemock.com/ASP.NET_unit_testing_page.php"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://www.typemock.com/ASP.NET_unit_testing_page.php"&gt;MVC&lt;/a&gt;, &lt;a href="http://www.typemock.com/wcfpage.php"&gt;WCF&lt;/a&gt;, WPF, &lt;a href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;Silverlight&lt;/a&gt; and more. Note that for &lt;a href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;unit testing Silverlight&lt;/a&gt; there is an open source Isolator add-on called &lt;a href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;SilverUnit&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The first 60 bloggers who will blog this text in their blog and &lt;a href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html"&gt;tell us about it&lt;/a&gt;, will get a Free Isolator ASP.NET Bundle license (Typemock Isolator + Ivonna). If you post this in an ASP.NET &lt;strong&gt;dedicated&lt;/strong&gt; blog, you'll get a license automatically (even if more than 60 submit) during the first week of this announcement.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Also 8 bloggers will get an &lt;strong&gt;additional 2 licenses&lt;/strong&gt; (each) to give away to their readers / friends.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Go ahead, click the following link for &lt;a href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html"&gt;more information&lt;/a&gt; on how to get your free license.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Of course you know what to do to spread the word! I hope no one minds this post ;-) ;-)&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:42a1fb4d-6e25-4a9e-844e-276f185e7690" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Typemock" rel="tag"&gt;Typemock&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET+Bundle" rel="tag"&gt;ASP.NET Bundle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Testing" rel="tag"&gt;Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TDD" rel="tag"&gt;TDD&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unit+Testing" rel="tag"&gt;Unit Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mocking" rel="tag"&gt;Mocking&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7092437" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=k2iIHIhYNPo:vWVRmbKjoRk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=k2iIHIhYNPo:vWVRmbKjoRk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=k2iIHIhYNPo:vWVRmbKjoRk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=k2iIHIhYNPo:vWVRmbKjoRk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=k2iIHIhYNPo:vWVRmbKjoRk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=k2iIHIhYNPo:vWVRmbKjoRk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=k2iIHIhYNPo:vWVRmbKjoRk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/k2iIHIhYNPo" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7092437</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7092437</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/05/19/product-announcement-spreading-the-word-typemock-asp-net-bundle-for-unit-testing.aspx</feedburner:origLink></item><item><title>Ajax Control Toolkit New Release, HTML Editor, Combo Box, Color Picker</title><link>http://feedproxy.google.com/~r/GuruStop/~3/CIHX71YTyhA/ajax-control-toolkit-new-release-html-editor-combo-box-color-picker.aspx</link><category>ASP.NET Controls</category><category>ASP.NET</category><category>Link List</category><category>Microsoft News</category><category>.NET</category><category>News</category><category>Web 2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Thu, 14 May 2009 00:49:17 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7086412</guid><description>&lt;p&gt;the AjaxControlToolkit has a new release, the release includes bug fixes and new HTMLEditor, ComboBox, ColorPicker controls/extenders.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326"&gt;       &lt;h4&gt;&lt;a href="http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326"&gt;Check the release&lt;/a&gt;&lt;/h4&gt;     &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx"&gt;       &lt;h4&gt;&lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx"&gt;Try the live demos&lt;/a&gt;&lt;/h4&gt;     &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;HTML Editor&lt;/h3&gt;  &lt;p&gt;I liked the HTMLEditor control so much from first sight. Pretty lightweight and customizable. I still need to check whether it works fine inside UpdatePanel and whether it can be used with RequiredFieldValidator or so.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_1C494A64.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="163" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_6D36E8BF.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/meligy/image_30524120.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="161" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_13F4D933.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx" href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx"&gt;http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Color Picker&lt;/h3&gt;  &lt;p&gt;The ColorPicjker is just an extender to TextBox control. This means a lot of opportunities and promises less problems with validators, etc... It’s a very nice one too.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_505D2810.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="186" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_658B2DB8.png" width="220" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx" href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx"&gt;http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ColorPicker/ColorPicker.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Combo Box&lt;/h3&gt;  &lt;p&gt;The ComboBox is a control that is like a DropDownList with auto complete except that the user can enter a new text that is NOT in the existing items. This is good or bad based on your sole use.&lt;/p&gt;  &lt;p&gt;I did not like how it’s not well styled in the example page. This means it’s going to be headache to style in my sites as well, which is one of the biggest problems with AJAXToolkit in general.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_01D86FD9.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="188" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_65E73AE0.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox.aspx" href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox.aspx"&gt;http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ComboBox/ComboBox.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:32bee2d7-1217-451d-aa54-f7087d5f2afc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/AJAX+Toolkit" rel="tag"&gt;AJAX Toolkit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAXToolkit" rel="tag"&gt;AJAXToolkit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX+Control+Toolkit" rel="tag"&gt;AJAX Control Toolkit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX+Control+Tool+kit" rel="tag"&gt;AJAX Control Tool kit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAXControlToolkit" rel="tag"&gt;AJAXControlToolkit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+Editor" rel="tag"&gt;HTML Editor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTMLEditor" rel="tag"&gt;HTMLEditor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WYSIWYG" rel="tag"&gt;WYSIWYG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WYSIWYG+Editor" rel="tag"&gt;WYSIWYG Editor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+WYSIWYG" rel="tag"&gt;HTML WYSIWYG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Color+Picker" rel="tag"&gt;Color Picker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ColorPicker" rel="tag"&gt;ColorPicker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+Color+Picker" rel="tag"&gt;HTML Color Picker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+ColorPicker" rel="tag"&gt;HTML ColorPicker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ComboBox" rel="tag"&gt;ComboBox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Combo+Box" rel="tag"&gt;Combo Box&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+ComboBox" rel="tag"&gt;HTML ComboBox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML+Combo+Box" rel="tag"&gt;HTML Combo Box&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+Combo+Box" rel="tag"&gt;Web Combo Box&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+ComboBox" rel="tag"&gt;Web ComboBox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/News" rel="tag"&gt;News&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Release" rel="tag"&gt;Release&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7086412" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=CIHX71YTyhA:vpL8iGLaj9s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=CIHX71YTyhA:vpL8iGLaj9s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=CIHX71YTyhA:vpL8iGLaj9s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=CIHX71YTyhA:vpL8iGLaj9s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=CIHX71YTyhA:vpL8iGLaj9s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=CIHX71YTyhA:vpL8iGLaj9s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=CIHX71YTyhA:vpL8iGLaj9s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/CIHX71YTyhA" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7086412</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7086412</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/05/14/ajax-control-toolkit-new-release-html-editor-combo-box-color-picker.aspx</feedburner:origLink></item><item><title>YQL – Yahoo Query Language</title><link>http://feedproxy.google.com/~r/GuruStop/~3/vZydRXyen7A/yql-yahoo-query-language.aspx</link><category>LINQ</category><category>Link List</category><category>News</category><category>Web 2.0</category><category>YDN</category><category>Yahoo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Mon, 04 May 2009 00:30:00 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7071600</guid><description>&lt;p&gt;Just in case you missed the news, Yahoo has created it’s own query thingy. No, no LINQ provider, it’s a “query language”. Check it out!&lt;/p&gt;
  &lt;h3&gt;&lt;a href="http://developer.yahoo.com/yql/" title="http://developer.yahoo.com/yql/" mce_href="http://developer.yahoo.com/yql/"&gt;http://developer.yahoo.com/yql/&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;Quote:&lt;/h3&gt;  
&lt;blockquote&gt;   &lt;h5&gt;&lt;i&gt;What is YQL?&lt;/i&gt;&lt;/h5&gt;    
&lt;p&gt;&lt;i&gt;Yahoo! makes a lot of structured data available to developers, primarily through its web services. These services require developers to locate the right URLs and documentation to access and query them which can result in a very fragmented experience. The YQL platform provides a single endpoint service that enables developers to query, filter and combine data across Yahoo! and beyond. YQL exposes a SQL-like SELECT syntax that is both familiar to developers and expressive enough for getting the right data. Through the SHOW and DESC commands we enable developers to discover the available data sources and structure without opening another web browser.&lt;/i&gt;&lt;/p&gt;
    &lt;h5&gt;&lt;i&gt;How Do I Get Started?&lt;/i&gt;&lt;/h5&gt;    
&lt;ol&gt;     
&lt;li&gt;&lt;i&gt;Check out the YQL &lt;/i&gt;&lt;a href="http://developer.yahoo.com/yql/console/" mce_href="http://developer.yahoo.com/yql/console/"&gt;&lt;i&gt;Console&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. &lt;/i&gt;&lt;/li&gt;
      
&lt;li&gt;&lt;i&gt;Read how to access YQL from &lt;/i&gt;&lt;a href="http://developer.yahoo.com/yql/guide/running-chapt.html" mce_href="http://developer.yahoo.com/yql/guide/running-chapt.html"&gt;&lt;i&gt;your application&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. &lt;/i&gt;&lt;/li&gt;
      
&lt;li&gt;&lt;i&gt;Get your &lt;/i&gt;&lt;a href="http://developer.yahoo.com/dashboard/createKey.html" mce_href="http://developer.yahoo.com/dashboard/createKey.html"&gt;&lt;i&gt;Access Keys&lt;/i&gt;&lt;/a&gt;&lt;i&gt; to sign your requests if you &lt;/i&gt;&lt;a href="http://developer.yahoo.com/yql/guide/authorization-access.html" mce_href="http://developer.yahoo.com/yql/guide/authorization-access.html"&gt;&lt;i&gt;need them&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. &lt;/i&gt;&lt;/li&gt;
   &lt;/ol&gt;
    &lt;h5&gt;&lt;i&gt;Usage limits&lt;/i&gt;&lt;/h5&gt;    
&lt;p&gt;&lt;i&gt;YQL has the following API usage restrictions:&lt;/i&gt;&lt;/p&gt;
    &lt;h6&gt;&lt;i&gt;Per application limit (identified by your Access Key):&lt;/i&gt;&lt;/h6&gt;    
&lt;ul&gt;     
&lt;li&gt;&lt;i&gt;100,000 calls per day. &lt;/i&gt;&lt;/li&gt;
   &lt;/ul&gt;
    &lt;h6&gt;&lt;i&gt;Per IP limits:&lt;/i&gt;&lt;/h6&gt;    
&lt;ul&gt;     
&lt;li&gt;&lt;i&gt;/v1/public/* 1000 calls per hour &lt;/i&gt;&lt;/li&gt;
      
&lt;li&gt;&lt;i&gt;/v1/yql/* 10000 calls per hour &lt;/i&gt;&lt;/li&gt;
   &lt;/ul&gt;
    
&lt;p&gt;&lt;i&gt;All rates are subject to change. In addition, you may also be subject to the underlying rate limits of other Yahoo and 3rd party web services.&lt;/i&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
  
&lt;p&gt;&lt;a href="http://developer.yahoo.com/yql/console/" mce_href="http://developer.yahoo.com/yql/console/"&gt;Try the console&lt;/a&gt; &lt;a href="http://developer.yahoo.com/yql/guide/" mce_href="http://developer.yahoo.com/yql/guide/"&gt;Read Documentation&lt;/a&gt; &lt;a href="http://developer.yahoo.com/yql/guide/yql_guide.pdf" mce_href="http://developer.yahoo.com/yql/guide/yql_guide.pdf"&gt;Download PDF Documentation&lt;/a&gt;&lt;/p&gt;
  
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#ff0000"&gt;Update:&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;You can also &lt;a href="http://blog.programmableweb.com/2009/04/30/yahoos-yql-makes-the-internet-your-database/" mce_href="http://blog.programmableweb.com/2009/04/30/yahoos-yql-makes-the-internet-your-database/"&gt;check this for more details&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
  
&lt;p&gt;Yes, I’m thinking about a LINQ provider to encapsulate this.&lt;/p&gt;
  
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
  
&lt;p&gt;Happy YQLing ;)&lt;/p&gt;
  
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f165269d-be8c-41d6-9c44-9bf7edc46342" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Yahoo" mce_href="http://technorati.com/tags/Yahoo" rel="tag"&gt;Yahoo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/YQL" mce_href="http://technorati.com/tags/YQL" rel="tag"&gt;YQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" mce_href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web2.0" mce_href="http://technorati.com/tags/Web2.0" rel="tag"&gt;Web2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+2.0" mce_href="http://technorati.com/tags/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web2" mce_href="http://technorati.com/tags/Web2" rel="tag"&gt;Web2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+2" mce_href="http://technorati.com/tags/Web+2" rel="tag"&gt;Web 2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Yahoo+Query+Language" mce_href="http://technorati.com/tags/Yahoo+Query+Language" rel="tag"&gt;Yahoo Query Language&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Query" mce_href="http://technorati.com/tags/Query" rel="tag"&gt;Query&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Language" mce_href="http://technorati.com/tags/Language" rel="tag"&gt;Language&lt;/a&gt;,&lt;a href="http://technorati.com/tags/YDN" mce_href="http://technorati.com/tags/YDN" rel="tag"&gt;YDN&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7071600" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=vZydRXyen7A:CVUIapr2Ezo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=vZydRXyen7A:CVUIapr2Ezo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=vZydRXyen7A:CVUIapr2Ezo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=vZydRXyen7A:CVUIapr2Ezo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=vZydRXyen7A:CVUIapr2Ezo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=vZydRXyen7A:CVUIapr2Ezo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=vZydRXyen7A:CVUIapr2Ezo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/vZydRXyen7A" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7071600</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7071600</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/05/04/yql-yahoo-query-language.aspx</feedburner:origLink></item><item><title>Typed Eager Loading Using Entity Framework (&amp; What is Eager Loading vs Deferred Loading)</title><link>http://feedproxy.google.com/~r/GuruStop/~3/IPzKdAqPcQA/typed-eager-loading-using-entity-framework-amp-what-is-eager-loading-vs-deferred-loading.aspx</link><category>C#</category><category>LINQ</category><category>ADO.NET</category><category>.NET FAQ</category><category>.NET</category><category>CodeProject</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Thu, 02 Apr 2009 05:30:00 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7020892</guid><description>&lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;If you don’t know what eager loading is, Jump to “&lt;a href="http://weblogs.asp.net/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=835&amp;amp;postid=7020892#whatsEager" mce_href="http://weblogs.asp.net/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=835&amp;amp;postid=7020892#whatsEager"&gt;What’s eager loading?&lt;/a&gt;”.&lt;/h4&gt;  &lt;h3&gt;Eager Loading Syntax&lt;/h3&gt;  &lt;p&gt;If you are eager loading Products for example in a typical (Categories 1&amp;lt;-&amp;gt;* Products) relation, the standard syntax would like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;DbDataContext.Categories.Include(“Products”)&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;What is the problem with that?&lt;/h4&gt;  &lt;p&gt;The “Products” part. The word “Products” is a string. If I rename the Products table to ShopProducts or whatever or even remove it from this data diagram and have it elsewhere, or even something wrong happens and the relation is removed from DB/diagram by mistake, my code will still compile, but will fail when it runs. This is BAD BAD BAD.&lt;/p&gt;  &lt;h4&gt;How to solve this?&lt;/h4&gt;  &lt;p&gt;Since I always believe that if something exists somewhere you shouldn’t do it yourself unless its totally broken (and I mean REALLY REALLY BROKEN), I started searching inside the Entity Framework itself for something to get the entity name from.&lt;/p&gt;  &lt;p&gt;At first it seemed super easy. Every entity class has a static property “EntityKeyPropertyName”, so, I thought I can write something like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;DbDataContext.Categories.Include(Product.EntityKeyPropertyName); // But this didn’t work&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where Product is the entity class generated for table “Products”. Note that singularizing the name (Products becomes Product) does not happen automatically like in Linq-To Sql, you’ll have to change it manually, which is not required for the code here of course.&lt;/p&gt;  &lt;p&gt;As you an see n the comment, this didn’t work. The value of property was always “-EntityKey-”, the default value of the abstract class “StructuralObject” which all entity classes inherit.&lt;/p&gt;  &lt;p&gt;I kept searching all over until I found that the only place I can get the name from was an Attribute generated on the class somewhat like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;[global::System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName="DatabaseNameFlowModel", Name="Products")]&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;My requirement was simple. if the diagram has something wrong that the relation between ParentTable and ChildTable tables but not about the entity classes themselves, My code should not still compile and fail on run. I need to use some code that depends on the relation so that if something is wrong with the relation this code fails early and I know about it the problem the next time I build the VS project.&lt;/p&gt;  &lt;h4&gt;The Final Solution&lt;/h4&gt;  &lt;p&gt;I tried badly to get the entity name from the API, after frustration, I ended up writing this code:&lt;/p&gt;  &lt;p&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red34\green189\blue255;\red12\green28\blue39;\red213\green225\blue224;\red255\green255\blue255;\red231\green217\blue122;\red124\green252\blue0;\red255\green255\blue0;\red166\green240\blue231;\red166\green240\blue230;\red198\green201\blue90;}??\fs20 \cf1\cb2\highlight2 using\cf3 {\b  System;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Collections}\cf4 {\b .}\cf3 {\b Generic;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects}\cf4 {\b .}\cf3 {\b DataClasses;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Linq}\cf4 {\b .}\cf3 {\b Expressions;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Reflection;}\par ??\par ??\cf1 namespace\cf3 {\b  Meligy}\cf4 {\b .}\cf3 {\b Samples}\cf4 {\b .}\cf3 {\b EntityFramework}\par ??{\b \{}\par ??{\b     }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 class\cf3 {\b  }\cf5 {\b LinqExenstions}\par ??\cf3 {\b     \{}\par ??{\b         }\cf6 //Used for child entities.\par ??\cf3 {\b         }\cf6 //Example: Order.Customer\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b StructuralObject}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf6 //Used for child collections of entities.\par ??\cf3 {\b         }\cf6 //Example: Order.OrderLines\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b RelatedEnd}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                  }\cf5 {\b LambdaExpression}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf6 //There must be only one root entity to load related entities to it.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (expression}\cf4 {\b .}\cf3 {\b Parameters}\cf4 {\b .}\cf3 {\b Count }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //We'll store entity names here in order then join them at the end.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityNames }\cf4 {\b =}\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b List}\cf4 {\b &amp;lt;}\cf1 string\cf4 {\b &amp;gt;}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //We split the calls ... Entity.MemberOfTypeChild.ChildMemberOfChildMember etc..\par ??\cf3 {\b             }\cf6 //Example: (Order ord) =&amp;gt; ord.Customer.Address\par ??\cf3 {\b             }\cf1 string\cf3 {\b [] childTypesMembers }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Body}\cf4 {\b .}\cf3 {\b ToString()}\cf4 {\b .}\cf3 {\b Split(}\cf9 '.'\cf3 {\b );}\par ??\par ??{\b             }\cf6 //Get the root entity type to start searching for the types of the members inside it.\par ??\cf3 {\b             }\cf6 //In prev. example: Find: Order\par ??\cf3 {\b             }\cf5 {\b Type}\cf3 {\b  parentType }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Parameters[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Type;}\par ??{\b             }\cf6 //entityNames.Add(GetEntityNameFromType(parentType));\par ??\par ??\cf3 {\b             }\cf6 //The first word in the expression is just a variable name of the root entity. \par ??\cf3 {\b             }\cf6 //  Skip it and start next.\par ??\cf3 {\b             }\cf6 //In example: First part is: ord\par ??\cf3 {\b             }\cf1 for\cf3 {\b  (}\cf1 int\cf3 {\b  i }\cf4 {\b =}\cf3 {\b  }\cf8 1\cf3 {\b ; i }\cf4 {\b &amp;lt;}\cf3 {\b  childTypesMembers}\cf4 {\b .}\cf3 {\b Length; i}\cf4 {\b ++}\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 string\cf3 {\b  memberName }\cf4 {\b =}\cf3 {\b  childTypesMembers[i];}\par ??\par ??{\b                 }\cf6 //Get the member from the root entity to get its entity type.\par ??\cf3 {\b                 }\cf5 {\b MemberInfo}\cf3 {\b  member }\cf4 {\b =}\cf3 {\b  parentType}\cf4 {\b .}\cf3 {\b GetMember(memberName)[}\cf8 0\cf3 {\b ];}\par ??\par ??{\b                 }\cf6 //We cannot get the type of the entity except by knowing\par ??\cf3 {\b                 }\cf6 //  whether it's property or field (most likely will be property).\par ??\cf3 {\b                 }\cf6 //Bad catch in the reflection API? Maybe!\par ??\cf3 {\b                 }\cf5 {\b Type}\cf3 {\b  memberType }\cf4 {\b =}\cf3 {\b  member}\cf4 {\b .}\cf3 {\b MemberType }\cf4 {\b ==}\cf3 {\b  }\cf10 {\b MemberTypes}\cf4 {\b .}\cf3 {\b Property}\par ??{\b                                       }\cf4 {\b ?}\cf3 {\b  ((}\cf5 {\b PropertyInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b PropertyType}\par ??{\b                                       : ((}\cf5 {\b FieldInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b FieldType;}\par ??\par ??{\b                 }\cf6 //Add the eneity name got from entity type to the list.\par ??\cf3 {\b                 entityNames}\cf4 {\b .}\cf3 {\b Add(GetEntityNameFromType(memberType));}\par ??\par ??{\b                 }\cf6 //The next member is belong to the child entity, so,\par ??\cf3 {\b                 }\cf6 //  the root entity to seach for members should be the child entity type.\par ??\cf3 {\b                 parentType }\cf4 {\b =}\cf3 {\b  memberType;}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Join the entity names by "." again.\par ??\cf3 {\b             }\cf1 string\cf3 {\b  includes }\cf4 {\b =}\cf3 {\b  }\cf1 string\cf4 {\b .}\cf3 {\b Join(}\cf9 "."\cf3 {\b , entityNames}\cf4 {\b .}\cf3 {\b ToArray());}\par ??\par ??{\b             }\cf6 //Simulate the original Include(string) call.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  parent}\cf4 {\b .}\cf3 {\b Include(includes);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 string\cf3 {\b  GetEntityNameFromType(}\cf5 {\b Type}\cf3 {\b  type)}\par ??{\b         \{}\par ??{\b             }\cf6 // We didn't just use the Entity type names because maybe\par ??\cf3 {\b             }\cf6 //  the table is called Orders and the class is Order or OrderEntity.\par ??\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (type}\cf4 {\b .}\cf3 {\b HasElementType) }\cf6 //Collection or array of eneity type\par ??\cf3 {\b             \{}\par ??{\b                 }\cf6 //The type of the element of the collection or array is what we want.\par ??\cf3 {\b                 type }\cf4 {\b =}\cf3 {\b  type}\cf4 {\b .}\cf3 {\b GetElementType();}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Get the attributes that have the entity name in them.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityTypeAttributes }\cf4 {\b =}\par ??\cf3 {\b                 type}\cf4 {\b .}\cf3 {\b GetCustomAttributes(}\cf1 typeof\cf3 {\b  (}\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b ), }\cf1 true\cf3 {\b ) }\cf1 as\cf3 {\b  }\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b [];}\par ??\par ??{\b             }\cf6 //Make sure there IS one and ONLY one attribute to get the only entity name.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (entityTypeAttributes }\cf4 {\b ==}\cf3 {\b  }\cf1 null\cf3 {\b  }\cf4 {\b ||}\cf3 {\b  entityTypeAttributes}\cf4 {\b .}\cf3 {\b Length }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //Return the entity name.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  entityTypeAttributes[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Name;}\par ??{\b         \}}\par ??{\b     \}}\par ??{\b \}}}
--&gt;&lt;style type="text/css"&gt;


.cf { font-family: consolas; font-size: 10pt; color: #d5e1e0; background: #0c1c27; font-weight: bold; }
.cl { margin: 0px; }
.cb1 { color: #22bdff; font-weight: normal; }
.cb2 { color: white; }
.cb3 { color: #e7d97a; }
.cb4 { color: #7cfc00; font-weight: normal; }
.cb5 { color: yellow; }
.cb6 { color: #a6f0e7; font-weight: normal; }
.cb7 { color: #a6f0e6; font-weight: normal; }
.cb8 { color: #c6c95a; }&lt;/style&gt;&lt;/p&gt;  &lt;div class="cf"&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red34\green189\blue255;\red12\green28\blue39;\red213\green225\blue224;\red255\green255\blue255;\red231\green217\blue122;\red124\green252\blue0;\red255\green255\blue0;\red166\green240\blue231;\red166\green240\blue230;\red198\green201\blue90;}??\fs20 \cf1\cb2\highlight2 using\cf3 {\b  System;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Collections}\cf4 {\b .}\cf3 {\b Generic;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects}\cf4 {\b .}\cf3 {\b DataClasses;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Linq}\cf4 {\b .}\cf3 {\b Expressions;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Reflection;}\par ??\par ??\cf1 namespace\cf3 {\b  Meligy}\cf4 {\b .}\cf3 {\b Samples}\cf4 {\b .}\cf3 {\b EntityFramework}\par ??{\b \{}\par ??{\b     }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 class\cf3 {\b  }\cf5 {\b LinqExenstions}\par ??\cf3 {\b     \{}\par ??{\b         }\cf6 //Used for child entities.\par ??\cf3 {\b         }\cf6 //Example: Order.Customer\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b StructuralObject}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf6 //Used for child collections of entities.\par ??\cf3 {\b         }\cf6 //Example: Order.OrderLines\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b RelatedEnd}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                  }\cf5 {\b LambdaExpression}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf6 //There must be only one root entity to load related entities to it.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (expression}\cf4 {\b .}\cf3 {\b Parameters}\cf4 {\b .}\cf3 {\b Count }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //We'll store entity names here in order then join them at the end.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityNames }\cf4 {\b =}\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b List}\cf4 {\b &amp;lt;}\cf1 string\cf4 {\b &amp;gt;}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //We split the calls ... Entity.MemberOfTypeChild.ChildMemberOfChildMember etc..\par ??\cf3 {\b             }\cf6 //Example: (Order ord) =&amp;gt; ord.Customer.Address\par ??\cf3 {\b             }\cf1 string\cf3 {\b [] childTypesMembers }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Body}\cf4 {\b .}\cf3 {\b ToString()}\cf4 {\b .}\cf3 {\b Split(}\cf9 '.'\cf3 {\b );}\par ??\par ??{\b             }\cf6 //Get the root entity type to start searching for the types of the members inside it.\par ??\cf3 {\b             }\cf6 //In prev. example: Find: Order\par ??\cf3 {\b             }\cf5 {\b Type}\cf3 {\b  parentType }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Parameters[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Type;}\par ??{\b             }\cf6 //entityNames.Add(GetEntityNameFromType(parentType));\par ??\par ??\cf3 {\b             }\cf6 //The first word in the expression is just a variable name of the root entity. \par ??\cf3 {\b             }\cf6 //  Skip it and start next.\par ??\cf3 {\b             }\cf6 //In example: First part is: ord\par ??\cf3 {\b             }\cf1 for\cf3 {\b  (}\cf1 int\cf3 {\b  i }\cf4 {\b =}\cf3 {\b  }\cf8 1\cf3 {\b ; i }\cf4 {\b &amp;lt;}\cf3 {\b  childTypesMembers}\cf4 {\b .}\cf3 {\b Length; i}\cf4 {\b ++}\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 string\cf3 {\b  memberName }\cf4 {\b =}\cf3 {\b  childTypesMembers[i];}\par ??\par ??{\b                 }\cf6 //Get the member from the root entity to get its entity type.\par ??\cf3 {\b                 }\cf5 {\b MemberInfo}\cf3 {\b  member }\cf4 {\b =}\cf3 {\b  parentType}\cf4 {\b .}\cf3 {\b GetMember(memberName)[}\cf8 0\cf3 {\b ];}\par ??\par ??{\b                 }\cf6 //We cannot get the type of the entity except by knowing\par ??\cf3 {\b                 }\cf6 //  whether it's property or field (most likely will be property).\par ??\cf3 {\b                 }\cf6 //Bad catch in the reflection API? Maybe!\par ??\cf3 {\b                 }\cf5 {\b Type}\cf3 {\b  memberType }\cf4 {\b =}\cf3 {\b  member}\cf4 {\b .}\cf3 {\b MemberType }\cf4 {\b ==}\cf3 {\b  }\cf10 {\b MemberTypes}\cf4 {\b .}\cf3 {\b Property}\par ??{\b                                       }\cf4 {\b ?}\cf3 {\b  ((}\cf5 {\b PropertyInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b PropertyType}\par ??{\b                                       : ((}\cf5 {\b FieldInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b FieldType;}\par ??\par ??{\b                 }\cf6 //Add the eneity name got from entity type to the list.\par ??\cf3 {\b                 entityNames}\cf4 {\b .}\cf3 {\b Add(GetEntityNameFromType(memberType));}\par ??\par ??{\b                 }\cf6 //The next member is belong to the child entity, so,\par ??\cf3 {\b                 }\cf6 //  the root entity to seach for members should be the child entity type.\par ??\cf3 {\b                 parentType }\cf4 {\b =}\cf3 {\b  memberType;}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Join the entity names by "." again.\par ??\cf3 {\b             }\cf1 string\cf3 {\b  includes }\cf4 {\b =}\cf3 {\b  }\cf1 string\cf4 {\b .}\cf3 {\b Join(}\cf9 "."\cf3 {\b , entityNames}\cf4 {\b .}\cf3 {\b ToArray());}\par ??\par ??{\b             }\cf6 //Simulate the original Include(string) call.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  parent}\cf4 {\b .}\cf3 {\b Include(includes);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 string\cf3 {\b  GetEntityNameFromType(}\cf5 {\b Type}\cf3 {\b  type)}\par ??{\b         \{}\par ??{\b             }\cf6 // We didn't just use the Entity type names because maybe\par ??\cf3 {\b             }\cf6 //  the table is called Orders and the class is Order or OrderEntity.\par ??\par ??\cf3 {\b             }\cf1 if\cf3 {\b (type}\cf4 {\b .}\cf3 {\b IsGenericType) }\cf6 // for collections, like: EntityCollection&amp;lt;OrderLines&amp;gt;\par ??\cf3 {\b             \{}\par ??{\b                 }\cf1 var\cf3 {\b  genericClassTypeParameters }\cf4 {\b =}\cf3 {\b  type}\cf4 {\b .}\cf3 {\b GetGenericArguments();}\par ??\par ??{\b                 }\cf6 //The generic class must have one entity type only to load it.\par ??\cf3 {\b                 }\cf1 if\cf3 {\b (genericClassTypeParameters}\cf4 {\b .}\cf3 {\b Length }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b                     }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??\par ??{\b                 }\cf6 //The type of the element of the collection is what we want.\par ??\cf3 {\b                 type }\cf4 {\b =}\cf3 {\b  genericClassTypeParameters[}\cf8 0\cf3 {\b ];}\par ??{\b             \}}\par ??{\b             }\cf1 else\cf3 {\b  }\cf1 if\cf3 {\b  (type}\cf4 {\b .}\cf3 {\b HasElementType) }\cf6 //For arrays, like: OrderLines[]\par ??\cf3 {\b             \{}\par ??{\b                 }\cf6 //The type of the element of the array is what we want.\par ??\cf3 {\b                 type }\cf4 {\b =}\cf3 {\b  type}\cf4 {\b .}\cf3 {\b GetElementType();}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Get the attributes that have the entity name in them.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityTypeAttributes }\cf4 {\b =}\par ??\cf3 {\b                 type}\cf4 {\b .}\cf3 {\b GetCustomAttributes(}\cf1 typeof\cf3 {\b  (}\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b ), }\cf1 true\cf3 {\b ) }\cf1 as\cf3 {\b  }\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b [];}\par ??\par ??{\b             }\cf6 //Make sure there IS one and ONLY one attribute to get the only entity name.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (entityTypeAttributes }\cf4 {\b ==}\cf3 {\b  }\cf1 null\cf3 {\b  }\cf4 {\b ||}\cf3 {\b  entityTypeAttributes}\cf4 {\b .}\cf3 {\b Length }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //Return the entity name.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  entityTypeAttributes[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Name;}\par ??{\b         \}}\par ??{\b     \}}\par ??{\b \}}}
--&gt;
&lt;style type="text/css"&gt;
.cf { font-family: Consolas; font-size: 10pt; color: #d5e1e0; background: #0c1c27; font-weight: bold; }
.cl { margin: 0px; }
.cb1 { color: #22bdff; font-weight: normal; }
.cb2 { color: white; }
.cb3 { color: #e7d97a; }
.cb4 { color: #7cfc00; font-weight: normal; }
.cb5 { color: yellow; }
.cb6 { color: #a6f0e7; font-weight: normal; }
.cb7 { color: #a6f0e6; font-weight: normal; }
.cb8 { color: #c6c95a; }&lt;/style&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red34\green189\blue255;\red12\green28\blue39;\red213\green225\blue224;\red255\green255\blue255;\red231\green217\blue122;\red124\green252\blue0;\red255\green255\blue0;\red166\green240\blue231;\red166\green240\blue230;\red198\green201\blue90;}??\fs20 \cf1\cb2\highlight2 using\cf3 {\b  System;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Collections}\cf4 {\b .}\cf3 {\b Generic;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Data}\cf4 {\b .}\cf3 {\b Objects}\cf4 {\b .}\cf3 {\b DataClasses;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Linq}\cf4 {\b .}\cf3 {\b Expressions;}\par ??\cf1 using\cf3 {\b  System}\cf4 {\b .}\cf3 {\b Reflection;}\par ??\par ??\cf1 namespace\cf3 {\b  Meligy}\cf4 {\b .}\cf3 {\b Samples}\cf4 {\b .}\cf3 {\b EntityFramework}\par ??{\b \{}\par ??{\b     }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 class\cf3 {\b  }\cf5 {\b LinqExenstions}\par ??\cf3 {\b     \{}\par ??{\b         }\cf6 //Used for child entities.\par ??\cf3 {\b         }\cf6 //Example: Order.Customer\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b StructuralObject}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf6 //Used for child collections of entities.\par ??\cf3 {\b         }\cf6 //Example: Order.OrderLines\par ??\cf3 {\b         }\cf1 public\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf1 this\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                 }\cf5 {\b Expression}\cf4 {\b &amp;lt;}\cf7 {\b Func}\cf4 {\b &amp;lt;}\cf3 {\b T, }\cf5 {\b RelatedEnd}\cf4 {\b &amp;gt;&amp;gt;}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf1 return\cf3 {\b  Include(parent, (}\cf5 {\b LambdaExpression}\cf3 {\b ) expression);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  Include}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b (}\cf5 {\b ObjectQuery}\cf4 {\b &amp;lt;}\cf3 {\b T}\cf4 {\b &amp;gt;}\cf3 {\b  parent,}\par ??{\b                                                  }\cf5 {\b LambdaExpression}\cf3 {\b  expression)}\par ??{\b             }\cf1 where\cf3 {\b  T : }\cf5 {\b StructuralObject}\par ??\cf3 {\b         \{}\par ??{\b             }\cf6 //There must be only one root entity to load related entities to it.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (expression}\cf4 {\b .}\cf3 {\b Parameters}\cf4 {\b .}\cf3 {\b Count }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //We'll store entity names here in order then join them at the end.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityNames }\cf4 {\b =}\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b List}\cf4 {\b &amp;lt;}\cf1 string\cf4 {\b &amp;gt;}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //We split the calls ... Entity.MemberOfTypeChild.ChildMemberOfChildMember etc..\par ??\cf3 {\b             }\cf6 //Example: (Order ord) =&amp;gt; ord.Customer.Address\par ??\cf3 {\b             }\cf1 string\cf3 {\b [] childTypesMembers }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Body}\cf4 {\b .}\cf3 {\b ToString()}\cf4 {\b .}\cf3 {\b Split(}\cf9 '.'\cf3 {\b );}\par ??\par ??{\b             }\cf6 //Get the root entity type to start searching for the types of the members inside it.\par ??\cf3 {\b             }\cf6 //In prev. example: Find: Order\par ??\cf3 {\b             }\cf5 {\b Type}\cf3 {\b  parentType }\cf4 {\b =}\cf3 {\b  expression}\cf4 {\b .}\cf3 {\b Parameters[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Type;}\par ??{\b             }\cf6 //entityNames.Add(GetEntityNameFromType(parentType));\par ??\par ??\cf3 {\b             }\cf6 //The first word in the expression is just a variable name of the root entity. \par ??\cf3 {\b             }\cf6 //  Skip it and start next.\par ??\cf3 {\b             }\cf6 //In example: First part is: ord\par ??\cf3 {\b             }\cf1 for\cf3 {\b  (}\cf1 int\cf3 {\b  i }\cf4 {\b =}\cf3 {\b  }\cf8 1\cf3 {\b ; i }\cf4 {\b &amp;lt;}\cf3 {\b  childTypesMembers}\cf4 {\b .}\cf3 {\b Length; i}\cf4 {\b ++}\cf3 {\b )}\par ??{\b             \{}\par ??{\b                 }\cf1 string\cf3 {\b  memberName }\cf4 {\b =}\cf3 {\b  childTypesMembers[i];}\par ??\par ??{\b                 }\cf6 //Get the member from the root entity to get its entity type.\par ??\cf3 {\b                 }\cf5 {\b MemberInfo}\cf3 {\b  member }\cf4 {\b =}\cf3 {\b  parentType}\cf4 {\b .}\cf3 {\b GetMember(memberName)[}\cf8 0\cf3 {\b ];}\par ??\par ??{\b                 }\cf6 //We cannot get the type of the entity except by knowing\par ??\cf3 {\b                 }\cf6 //  whether it's property or field (most likely will be property).\par ??\cf3 {\b                 }\cf6 //Bad catch in the reflection API? Maybe!\par ??\cf3 {\b                 }\cf5 {\b Type}\cf3 {\b  memberType }\cf4 {\b =}\cf3 {\b  member}\cf4 {\b .}\cf3 {\b MemberType }\cf4 {\b ==}\cf3 {\b  }\cf10 {\b MemberTypes}\cf4 {\b .}\cf3 {\b Property}\par ??{\b                                       }\cf4 {\b ?}\cf3 {\b  ((}\cf5 {\b PropertyInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b PropertyType}\par ??{\b                                       : ((}\cf5 {\b FieldInfo}\cf3 {\b ) member)}\cf4 {\b .}\cf3 {\b FieldType;}\par ??\par ??{\b                 }\cf6 //Add the eneity name got from entity type to the list.\par ??\cf3 {\b                 entityNames}\cf4 {\b .}\cf3 {\b Add(GetEntityNameFromType(memberType));}\par ??\par ??{\b                 }\cf6 //The next member is belong to the child entity, so,\par ??\cf3 {\b                 }\cf6 //  the root entity to seach for members should be the child entity type.\par ??\cf3 {\b                 parentType }\cf4 {\b =}\cf3 {\b  memberType;}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Join the entity names by "." again.\par ??\cf3 {\b             }\cf1 string\cf3 {\b  includes }\cf4 {\b =}\cf3 {\b  }\cf1 string\cf4 {\b .}\cf3 {\b Join(}\cf9 "."\cf3 {\b , entityNames}\cf4 {\b .}\cf3 {\b ToArray());}\par ??\par ??{\b             }\cf6 //Simulate the original Include(string) call.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  parent}\cf4 {\b .}\cf3 {\b Include(includes);}\par ??{\b         \}}\par ??\par ??{\b         }\cf1 private\cf3 {\b  }\cf1 static\cf3 {\b  }\cf1 string\cf3 {\b  GetEntityNameFromType(}\cf5 {\b Type}\cf3 {\b  type)}\par ??{\b         \{}\par ??{\b             }\cf6 // We didn't just use the Entity type names because maybe\par ??\cf3 {\b             }\cf6 //  the table is called Orders and the class is Order or OrderEntity.\par ??\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (type}\cf4 {\b .}\cf3 {\b HasElementType) }\cf6 //For arrays, like: OrderLines[]\par ??\cf3 {\b             \{}\par ??{\b                 }\cf6 //The type of the element of the array is what we want.\par ??\cf3 {\b                 type }\cf4 {\b =}\cf3 {\b  type}\cf4 {\b .}\cf3 {\b GetElementType();}\par ??{\b             \}}\par ??{\b             }\cf1 else\cf3 {\b  }\cf1 if\cf3 {\b  (type}\cf4 {\b .}\cf3 {\b IsGenericType) }\cf6 // for collections, like: EntityCollection&amp;lt;OrderLines&amp;gt;\par ??\cf3 {\b             \{}\par ??{\b                 }\cf1 var\cf3 {\b  genericClassTypeParameters }\cf4 {\b =}\cf3 {\b  type}\cf4 {\b .}\cf3 {\b GetGenericArguments();}\par ??\par ??{\b                 }\cf6 //The generic class must have one entity type only to load it.\par ??\cf3 {\b                 }\cf1 if\cf3 {\b  (genericClassTypeParameters}\cf4 {\b .}\cf3 {\b Length }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b                     }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??\par ??{\b                 }\cf6 //The type of the element of the collection is what we want.\par ??\cf3 {\b                 type }\cf4 {\b =}\cf3 {\b  genericClassTypeParameters[}\cf8 0\cf3 {\b ];}\par ??{\b             \}}\par ??\par ??{\b             }\cf6 //Get the attributes that have the entity name in them.\par ??\cf3 {\b             }\cf1 var\cf3 {\b  entityTypeAttributes }\cf4 {\b =}\par ??\cf3 {\b                 type}\cf4 {\b .}\cf3 {\b GetCustomAttributes(}\cf1 typeof\cf3 {\b  (}\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b ), }\cf1 true\cf3 {\b ) }\cf1 as\cf3 {\b  }\cf5 {\b EdmEntityTypeAttribute}\cf3 {\b [];}\par ??\par ??{\b             }\cf6 //Make sure there IS one and ONLY one attribute to get the only entity name.\par ??\cf3 {\b             }\cf1 if\cf3 {\b  (entityTypeAttributes }\cf4 {\b ==}\cf3 {\b  }\cf1 null\cf3 {\b  }\cf4 {\b ||}\cf3 {\b  entityTypeAttributes}\cf4 {\b .}\cf3 {\b Length }\cf4 {\b !=}\cf3 {\b  }\cf8 1\cf3 {\b )}\par ??{\b                 }\cf1 throw\cf3 {\b  }\cf1 new\cf3 {\b  }\cf5 {\b NotSupportedException}\cf3 {\b ();}\par ??\par ??{\b             }\cf6 //Return the entity name.\par ??\cf3 {\b             }\cf1 return\cf3 {\b  entityTypeAttributes[}\cf8 0\cf3 {\b ]}\cf4 {\b .}\cf3 {\b Name;}\par ??{\b         \}}\par ??{\b     \}}\par ??{\b \}}}
--&gt;
&lt;style type="text/css"&gt;
.cf { font-family: Consolas; font-size: 10pt; color: #d5e1e0; background: #0c1c27; font-weight: bold; }
.cl { margin: 0px; }
.cb1 { color: #22bdff; font-weight: normal; }
.cb2 { color: white; }
.cb3 { color: #e7d97a; }
.cb4 { color: #7cfc00; font-weight: normal; }
.cb5 { color: yellow; }
.cb6 { color: #a6f0e7; font-weight: normal; }
.cb7 { color: #a6f0e6; font-weight: normal; }
.cb8 { color: #c6c95a; }
&lt;/style&gt;
&lt;div class="cf"&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System&lt;span class="cb2"&gt;.&lt;/span&gt;Collections&lt;span class="cb2"&gt;.&lt;/span&gt;Generic;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System&lt;span class="cb2"&gt;.&lt;/span&gt;Data&lt;span class="cb2"&gt;.&lt;/span&gt;Objects;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System&lt;span class="cb2"&gt;.&lt;/span&gt;Data&lt;span class="cb2"&gt;.&lt;/span&gt;Objects&lt;span class="cb2"&gt;.&lt;/span&gt;DataClasses;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System&lt;span class="cb2"&gt;.&lt;/span&gt;Linq&lt;span class="cb2"&gt;.&lt;/span&gt;Expressions;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;using&lt;/span&gt; System&lt;span class="cb2"&gt;.&lt;/span&gt;Reflection;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&lt;span class="cb1"&gt;namespace&lt;/span&gt; Meligy&lt;span class="cb2"&gt;.&lt;/span&gt;Samples&lt;span class="cb2"&gt;.&lt;/span&gt;EntityFramework&lt;/pre&gt;
&lt;pre class="cl"&gt;{&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;public&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;class&lt;/span&gt; &lt;span class="cb3"&gt;LinqExenstions&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Used for child entities.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Example: Order.Customer&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;public&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; Include&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt;(&lt;span class="cb1"&gt;this&lt;/span&gt; &lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; parent,&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Expression&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;&lt;span class="cb5"&gt;Func&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T, &lt;span class="cb3"&gt;StructuralObject&lt;/span&gt;&lt;span class="cb2"&gt;&amp;gt;&amp;gt;&lt;/span&gt; expression)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;where&lt;/span&gt; T : &lt;span class="cb3"&gt;StructuralObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; Include(parent, (&lt;span class="cb3"&gt;LambdaExpression&lt;/span&gt;) expression);&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Used for child collections of entities.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Example: Order.OrderLines&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;public&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; Include&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt;(&lt;span class="cb1"&gt;this&lt;/span&gt; &lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; parent,&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Expression&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;&lt;span class="cb5"&gt;Func&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T, &lt;span class="cb3"&gt;RelatedEnd&lt;/span&gt;&lt;span class="cb2"&gt;&amp;gt;&amp;gt;&lt;/span&gt; expression)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;where&lt;/span&gt; T : &lt;span class="cb3"&gt;StructuralObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; Include(parent, (&lt;span class="cb3"&gt;LambdaExpression&lt;/span&gt;) expression);&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; Include&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt;(&lt;span class="cb3"&gt;ObjectQuery&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;T&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt; parent,&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;span class="cb3"&gt;LambdaExpression&lt;/span&gt; expression)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;where&lt;/span&gt; T : &lt;span class="cb3"&gt;StructuralObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//There must be only one root entity to load related entities to it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (expression&lt;span class="cb2"&gt;.&lt;/span&gt;Parameters&lt;span class="cb2"&gt;.&lt;/span&gt;Count &lt;span class="cb2"&gt;!=&lt;/span&gt; &lt;span class="cb6"&gt;1&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;throw&lt;/span&gt; &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb3"&gt;NotSupportedException&lt;/span&gt;();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//We'll store entity names here in order then join them at the end.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;var&lt;/span&gt; entityNames &lt;span class="cb2"&gt;=&lt;/span&gt; &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb3"&gt;List&lt;/span&gt;&lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt;&lt;span class="cb1"&gt;string&lt;/span&gt;&lt;span class="cb2"&gt;&amp;gt;&lt;/span&gt;();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//We split the calls ... Entity.MemberOfTypeChild.ChildMemberOfChildMember etc..&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Example: (Order ord) =&amp;gt; ord.Customer.Address&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt;[] childTypesMembers &lt;span class="cb2"&gt;=&lt;/span&gt; expression&lt;span class="cb2"&gt;.&lt;/span&gt;Body&lt;span class="cb2"&gt;.&lt;/span&gt;ToString()&lt;span class="cb2"&gt;.&lt;/span&gt;Split(&lt;span class="cb7"&gt;'.'&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Get the root entity type to start searching for the types of the members inside it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//In prev. example: Find: Order&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Type&lt;/span&gt; parentType &lt;span class="cb2"&gt;=&lt;/span&gt; expression&lt;span class="cb2"&gt;.&lt;/span&gt;Parameters[&lt;span class="cb6"&gt;0&lt;/span&gt;]&lt;span class="cb2"&gt;.&lt;/span&gt;Type;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//entityNames.Add(GetEntityNameFromType(parentType));&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//The first word in the expression is just a variable name of the root entity. &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//&amp;nbsp; Skip it and start next.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//In example: First part is: ord&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;for&lt;/span&gt; (&lt;span class="cb1"&gt;int&lt;/span&gt; i &lt;span class="cb2"&gt;=&lt;/span&gt; &lt;span class="cb6"&gt;1&lt;/span&gt;; i &lt;span class="cb2"&gt;&amp;lt;&lt;/span&gt; childTypesMembers&lt;span class="cb2"&gt;.&lt;/span&gt;Length; i&lt;span class="cb2"&gt;++&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; memberName &lt;span class="cb2"&gt;=&lt;/span&gt; childTypesMembers[i];&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Get the member from the root entity to get its entity type.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;MemberInfo&lt;/span&gt; member &lt;span class="cb2"&gt;=&lt;/span&gt; parentType&lt;span class="cb2"&gt;.&lt;/span&gt;GetMember(memberName)[&lt;span class="cb6"&gt;0&lt;/span&gt;];&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//We cannot get the type of the entity except by knowing&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//&amp;nbsp; whether it's property or field (most likely will be property).&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Bad catch in the reflection API? Maybe!&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb3"&gt;Type&lt;/span&gt; memberType &lt;span class="cb2"&gt;=&lt;/span&gt; member&lt;span class="cb2"&gt;.&lt;/span&gt;MemberType &lt;span class="cb2"&gt;==&lt;/span&gt; &lt;span class="cb8"&gt;MemberTypes&lt;/span&gt;&lt;span class="cb2"&gt;.&lt;/span&gt;Property&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span class="cb2"&gt;?&lt;/span&gt; ((&lt;span class="cb3"&gt;PropertyInfo&lt;/span&gt;) member)&lt;span class="cb2"&gt;.&lt;/span&gt;PropertyType&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; : ((&lt;span class="cb3"&gt;FieldInfo&lt;/span&gt;) member)&lt;span class="cb2"&gt;.&lt;/span&gt;FieldType;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Add the eneity name got from entity type to the list.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; entityNames&lt;span class="cb2"&gt;.&lt;/span&gt;Add(GetEntityNameFromType(memberType));&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//The next member is belong to the child entity, so,&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//&amp;nbsp; the root entity to seach for members should be the child entity type.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; parentType &lt;span class="cb2"&gt;=&lt;/span&gt; memberType;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Join the entity names by "." again.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;string&lt;/span&gt; includes &lt;span class="cb2"&gt;=&lt;/span&gt; &lt;span class="cb1"&gt;string&lt;/span&gt;&lt;span class="cb2"&gt;.&lt;/span&gt;Join(&lt;span class="cb7"&gt;"."&lt;/span&gt;, entityNames&lt;span class="cb2"&gt;.&lt;/span&gt;ToArray());&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Simulate the original Include(string) call.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; parent&lt;span class="cb2"&gt;.&lt;/span&gt;Include(includes);&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;private&lt;/span&gt; &lt;span class="cb1"&gt;static&lt;/span&gt; &lt;span class="cb1"&gt;string&lt;/span&gt; GetEntityNameFromType(&lt;span class="cb3"&gt;Type&lt;/span&gt; type)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;// We didn't just use the Entity type names because maybe&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//&amp;nbsp; the table is called Orders and the class is Order or OrderEntity.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (type&lt;span class="cb2"&gt;.&lt;/span&gt;HasElementType) &lt;span class="cb4"&gt;//For arrays, like: OrderLines[]&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//The type of the element of the array is what we want.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type &lt;span class="cb2"&gt;=&lt;/span&gt; type&lt;span class="cb2"&gt;.&lt;/span&gt;GetElementType();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;else&lt;/span&gt; &lt;span class="cb1"&gt;if&lt;/span&gt; (type&lt;span class="cb2"&gt;.&lt;/span&gt;IsGenericType) &lt;span class="cb4"&gt;// for collections, like: EntityCollection&amp;lt;OrderLines&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;var&lt;/span&gt; genericClassTypeParameters &lt;span class="cb2"&gt;=&lt;/span&gt; type&lt;span class="cb2"&gt;.&lt;/span&gt;GetGenericArguments();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//The generic class must have one entity type only to load it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (genericClassTypeParameters&lt;span class="cb2"&gt;.&lt;/span&gt;Length &lt;span class="cb2"&gt;!=&lt;/span&gt; &lt;span class="cb6"&gt;1&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;throw&lt;/span&gt; &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb3"&gt;NotSupportedException&lt;/span&gt;();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//The type of the element of the collection is what we want.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type &lt;span class="cb2"&gt;=&lt;/span&gt; genericClassTypeParameters[&lt;span class="cb6"&gt;0&lt;/span&gt;];&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Get the attributes that have the entity name in them.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;var&lt;/span&gt; entityTypeAttributes &lt;span class="cb2"&gt;=&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type&lt;span class="cb2"&gt;.&lt;/span&gt;GetCustomAttributes(&lt;span class="cb1"&gt;typeof&lt;/span&gt; (&lt;span class="cb3"&gt;EdmEntityTypeAttribute&lt;/span&gt;), &lt;span class="cb1"&gt;true&lt;/span&gt;) &lt;span class="cb1"&gt;as&lt;/span&gt; &lt;span class="cb3"&gt;EdmEntityTypeAttribute&lt;/span&gt;[];&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Make sure there IS one and ONLY one attribute to get the only entity name.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;if&lt;/span&gt; (entityTypeAttributes &lt;span class="cb2"&gt;==&lt;/span&gt; &lt;span class="cb1"&gt;null&lt;/span&gt; &lt;span class="cb2"&gt;||&lt;/span&gt; entityTypeAttributes&lt;span class="cb2"&gt;.&lt;/span&gt;Length &lt;span class="cb2"&gt;!=&lt;/span&gt; &lt;span class="cb6"&gt;1&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;throw&lt;/span&gt; &lt;span class="cb1"&gt;new&lt;/span&gt; &lt;span class="cb3"&gt;NotSupportedException&lt;/span&gt;();&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb4"&gt;//Return the entity name.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="cb1"&gt;return&lt;/span&gt; entityTypeAttributes[&lt;span class="cb6"&gt;0&lt;/span&gt;]&lt;span class="cb2"&gt;.&lt;/span&gt;Name;&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre class="cl"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;This enables you to write:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;DbDataContext.Categories.Include( (cat)=&amp;gt; cat.Prodycts);&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;DbDataContext.Prodycts.Include( (prod)=&amp;gt; prod.Category);&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to your need.&lt;/p&gt;

&lt;p&gt;For things like: Order.Customer.Address (multiple levels), you’ll have to write code like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;DbDataContext.Orders.Include( order =&amp;gt; order.Customer ).Include( customer =&amp;gt; Customer.Address );&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id="whatsEager"&gt;What’s Eager Loading? (in case you don’t know)&lt;/h3&gt;

&lt;p&gt;Let’s say you have tables Products, and Categories with relation 1&amp;lt;-&amp;gt;* between them (Any category has many products; one product has one category). Let’s say you want to display a page of all products grouped by categories. Something like the following list but with much more information of course:&lt;/p&gt;

&lt;ul&gt;
  &lt;ul&gt;
    &lt;li&gt;Category 1 
      &lt;ul&gt;
        &lt;li&gt;Product A &lt;/li&gt;

        &lt;li&gt;Product B &lt;/li&gt;

        &lt;li&gt;Product C &lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;

    &lt;li&gt;Category 2 
      &lt;ul&gt;
        &lt;li&gt;Product X &lt;/li&gt;

        &lt;li&gt;Product Y &lt;/li&gt;

        &lt;li&gt;Product Z &lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;If you are using some ORM / Code generator that creates for you classes like “Product”, “Category” and gives you properties like “myCategory.Products” , “myProduct.Category”, how would you create such page?&lt;/p&gt;

&lt;p&gt;Normally you’ll put a repeater or such for products inside a repeater for categories. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_5C17A737.png" mce_href="http://weblogs.asp.net/blogs/meligy/image_5C17A737.png"&gt;&lt;img src="http://weblogs.asp.net/blogs/meligy/image_thumb_26A175C3.png" title="image" style="border-width: 0px; display: inline;" alt="image" mce_src="http://weblogs.asp.net/blogs/meligy/image_thumb_26A175C3.png" border="0" height="244" width="400"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The products repeater will have its data source set to the current category item of the Categories repeater, something like “( (CategoryEntity)Container.DataItem ).Products”. Fine with that? Familiar?&lt;/p&gt;

&lt;p&gt;OK. Now, if the code generator that generated the “Products” property has something like that:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;public List&amp;lt;PRoduct&amp;gt; _Products; 
      &lt;br&gt;public List&amp;lt;PRoduct&amp;gt; Products 

      &lt;br&gt;{ 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_Products == null) 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Products = (from products in DB.Products 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where products.CategoryID == this.ID 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select products) 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ToList(); 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/b&gt;&lt;/p&gt;

  &lt;p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _Products; 
      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 

      &lt;br&gt;}&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;* Nevermind the LINQ syntax. It’s just like writing “SELECT * FROM [Products] WHERE …” with all the dataset/datareader stuff.&lt;/p&gt;

&lt;h4&gt;Lazy Loading (AKA. Deferred Loading)&lt;/h4&gt;

&lt;p&gt;If the generated code (or your code) looks like this, this means that that for every category in the database, you’ll have a separate DB call to get the products of this category. &lt;/p&gt;

&lt;p&gt;It also means that the products of each category will not be loaded until someone writes code that calls the getter of the Products property. That’s why this style of coding (not loading the related objects until they’re asked to be loaded) is called &lt;b&gt;Lazy Loading&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;This is good for a single category where you may be seeking just the basic information of the category and will not try to load products, since then they will not be requested when you don’t ask for it.&lt;/p&gt;

&lt;p&gt;However, this is very bad for our example page. Because it means that a new DB call for each category. Imagine that you have 20 or 50 or 100 Category there, this will give you how many DB calls? (Hint: N Categories + 1 call for the category list itself).&lt;/p&gt;

&lt;h3&gt;Eager Loading&lt;/h3&gt;

&lt;p&gt;What if the code in the getter above was in the constructor?. Imaging something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;public Category(int categoryID) 
      &lt;br&gt;{ 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Code that laods category info from DB. Does not matter here. 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Could be in factory method or such. Not our topic 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _CategoryID = categoryID; 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // .... .... .... Continue Loading Logic&lt;/b&gt;&lt;/p&gt;

  &lt;p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //The important part 
      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Products = (from products in DB.Products 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where products.CategoryID == this.ID 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select products) 

      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ToList(); 

      &lt;br&gt;}&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is good in case you know that in every situation when you use the category, the Products will be needed. This is probably not useful in a Product/category Scenario but think of a Person table and Address table where most likely whenever you load a Person you’re going to load his Addresses. &lt;/p&gt;

&lt;p&gt;This is also useful especially when using ORM/code generator as in the first example. Lets get back to the Repeater example. If you use Entity framework or similar ORM, and you set the Categories query to load the Products eager loading (meaning each Category is created with its Products loaded already), Entity Framework can have a single connection and only TWO database hits, one for the Categories, and one for the Products. This is very useful in many listing scenarios. It also help especially when you have many parent objects (say Categories) or if the parent object needs to load entities of many different classes (say User needs to load Roles and Permissions and Personal Information and History and …. (if such case is applicable for you of course.&lt;/p&gt;

&lt;p&gt;Now that you know what eager loading is, you can go up and check how the Entity Framework does that.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a0769930-435e-43f7-90c9-3238271f8b1c" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Entity+Framework" mce_href="http://technorati.com/tags/Entity+Framework" rel="tag"&gt;Entity Framework&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" mce_href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ+To+Entities" mce_href="http://technorati.com/tags/LINQ+To+Entities" rel="tag"&gt;LINQ To Entities&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LinqToEntities" mce_href="http://technorati.com/tags/LinqToEntities" rel="tag"&gt;LinqToEntities&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EagerLoading" mce_href="http://technorati.com/tags/EagerLoading" rel="tag"&gt;EagerLoading&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Eager+Loading" mce_href="http://technorati.com/tags/Eager+Loading" rel="tag"&gt;Eager Loading&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Meligy" mce_href="http://technorati.com/tags/Meligy" rel="tag"&gt;Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mohamed+Meligy" mce_href="http://technorati.com/tags/Mohamed+Meligy" rel="tag"&gt;Mohamed Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Lambda+Expressions" mce_href="http://technorati.com/tags/Lambda+Expressions" rel="tag"&gt;Lambda Expressions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+Expressions" mce_href="http://technorati.com/tags/Code+Expressions" rel="tag"&gt;Code Expressions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C%23+3.0" mce_href="http://technorati.com/tags/C%23+3.0" rel="tag"&gt;C# 3.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C%233" mce_href="http://technorati.com/tags/C%233" rel="tag"&gt;C#3&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Csharp" mce_href="http://technorati.com/tags/Csharp" rel="tag"&gt;Csharp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C+Sharp" mce_href="http://technorati.com/tags/C+Sharp" rel="tag"&gt;C Sharp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C%23" mce_href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data+Access" mce_href="http://technorati.com/tags/Data+Access" rel="tag"&gt;Data Access&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ORM" mce_href="http://technorati.com/tags/ORM" rel="tag"&gt;ORM&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7020892" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=IPzKdAqPcQA:1apHtp_aaeg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=IPzKdAqPcQA:1apHtp_aaeg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=IPzKdAqPcQA:1apHtp_aaeg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=IPzKdAqPcQA:1apHtp_aaeg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=IPzKdAqPcQA:1apHtp_aaeg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=IPzKdAqPcQA:1apHtp_aaeg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=IPzKdAqPcQA:1apHtp_aaeg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/IPzKdAqPcQA" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">18</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=7020892</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=7020892</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/04/02/typed-eager-loading-using-entity-framework-amp-what-is-eager-loading-vs-deferred-loading.aspx</feedburner:origLink></item><item><title>Hey, Follow Me on Twitter</title><link>http://feedproxy.google.com/~r/GuruStop/~3/_YSMzb8g2YI/hey-follow-me-on-twitter.aspx</link><category>Blogging</category><category>News</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Thu, 19 Mar 2009 09:20:31 PDT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6979728</guid><description>&lt;h3&gt;Follow Me On Twitter&lt;/h3&gt;  &lt;blockquote&gt;   &lt;h4&gt;&lt;a title="http://twitter.com/Mohamed_Meligy" href="http://twitter.com/Mohamed_Meligy"&gt;&lt;strong&gt;http://twitter.com/Mohamed_Meligy&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt; &lt;/blockquote&gt;  &lt;p&gt;So, a very short note on my last news is that now I’m in Abu Dhabi, UAE; for a while not having a laptop, which is why I haven’t blogged since dotNETwork CodeCamp’09.&lt;/p&gt;  &lt;p&gt;Then I thought of Micro-blogging. If you know Twitter already you know what I mean, if not, think of something like facebook status; micro space to say something that’s in your mind now. A good way to say something quick and it has been popular for technical guys and even some western public figures for years.&lt;/p&gt;  &lt;p&gt;So, basically, you can have people who subscribe to (AKA “follow”) your Twitter updates using Twitter website or just subscribing to your updates RSS feed, can include links or mention other users or reply to their updates. You can “tweet” by going to the website or by sending SMS, or using one of many desktop applications / add-ins that exist for this, and yeah, it has a facebook application that sets your facebook status to your last Twiter update.&lt;/p&gt;  &lt;p&gt;I’ve been member of Twitter for long, but I just follow the updates of some other guys and very rarely have my own updates. Now I’m going to send more updates myself!&amp;#160; [If god Will]&lt;/p&gt;  &lt;h4&gt;My last two updates before writing this post:&lt;/h4&gt;  &lt;ol&gt;   &lt;ol&gt;     &lt;li&gt;&lt;strong&gt;It's a final releases weekend!!! Internet Explorer 8 final is out too, download from &lt;/strong&gt;&lt;a href="http://tinyurl.com/ie-home"&gt;&lt;strong&gt;http://tinyurl.com/ie-home&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;ASP.NET MVC v1 is out. Download from &lt;/strong&gt;&lt;a href="http://tinyurl.com/aspmvc1"&gt;&lt;strong&gt;http://tinyurl.com/aspmvc1&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;. Also check the ebook &lt;/strong&gt;&lt;a href="http://tinyurl.com/aspmvcebook"&gt;&lt;strong&gt;http://tinyurl.com/aspmvcebook&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;But &lt;u&gt;NOTE&lt;/u&gt; that I do intend to make my twitter updates a &lt;u&gt;&lt;strong&gt;hybrid between technical stuff and personal stuff&lt;/strong&gt;&lt;/u&gt;. &lt;/p&gt;  &lt;p&gt;Based on the Twitter client i use and primarily my mood and how much I get busy (and with what) I’ll either be sending an update every few minutes or having no updates for a year or more. We shall see how this may go!&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Follow Me On Twitter&lt;/h3&gt;  &lt;blockquote&gt;   &lt;h4&gt;&lt;a title="http://twitter.com/Mohamed_Meligy" href="http://twitter.com/Mohamed_Meligy"&gt;&lt;strong&gt;http://twitter.com/Mohamed_Meligy&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;BTW&lt;/strong&gt;, pray for me to get my laptop this Sunday as expected [If God Will]. I like the huge DELL super-flexible wide screen and it’s stretching &amp;amp; rotating holder so much, but I need to blog about those snippets of code I have written in the new project I’m working on now and dump more of my thoughts about validation, LINQ, Domain Driven Design, ASP.NET workarounds and such. I need to finish stuff in the weekend some related to work and some related to family and some related to BLOGGING ;). I need to use OneNote to document my meetings wherever they are set and still have my Wi-Fi Internet. Man, I just cannot work without this portable thing in my hands!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;BTW#2: &lt;/h3&gt;  &lt;p&gt;If you are subscribed to my &lt;strong&gt;&lt;a href="http://www.google.com/reader/shared/user/08221036579558509505/state/com.google/broadcast"&gt;Google Reader Shared Items&lt;/a&gt;&lt;/strong&gt; (where I share everything I read or find interesting on the web and SO MANY FEEDS), you’ll get my Twitter updates as well, as I’m subscribed to my own Twitter feed and share my updates in the same feed.&lt;/p&gt;  &lt;h3&gt;Google Reader Shared Items&lt;/h3&gt;  &lt;blockquote&gt;   &lt;h4&gt;&lt;a href="http://www.google.com/reader/shared/user/08221036579558509505/state/com.google/broadcast"&gt;http://www.google.com/reader/shared/user/08221036579558509505/state/com.google/broadcast&lt;/a&gt;&lt;/h4&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a2d05253-0fe7-44fd-ab48-efa06bb8b80a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Meligy" rel="tag"&gt;Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Personal" rel="tag"&gt;Personal&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/facebook.+microblogging" rel="tag"&gt;facebook. microblogging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/micro-blogging" rel="tag"&gt;micro-blogging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/micro+blogging" rel="tag"&gt;micro blogging&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6979728" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=_YSMzb8g2YI:rUvwad877Fs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=_YSMzb8g2YI:rUvwad877Fs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=_YSMzb8g2YI:rUvwad877Fs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=_YSMzb8g2YI:rUvwad877Fs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=_YSMzb8g2YI:rUvwad877Fs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=_YSMzb8g2YI:rUvwad877Fs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=_YSMzb8g2YI:rUvwad877Fs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/_YSMzb8g2YI" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6979728</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6979728</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/03/19/hey-follow-me-on-twitter.aspx</feedburner:origLink></item><item><title>dotNETwork CodeCamp ‘09: Framework Design Guidelines &amp; Managed Extensibility Framework (MEF) Slides Available</title><link>http://feedproxy.google.com/~r/GuruStop/~3/RGE95ngfK7Y/dotnetwork-codecamp-09-framework-design-guidelines-amp-managed-extensibility-framework-mef-slides-available.aspx</link><category>OOP</category><category>Patterns</category><category>dotNETwork</category><category>Local Events</category><category>MDC</category><category>DI &amp; IoC</category><category>VS Add-ins</category><category>.NET</category><category>News</category><category>DI &amp;amp; IoC</category><category>CodeCamp</category><category>Code Camp '09</category><category>MEF</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Wed, 25 Feb 2009 00:29:29 PST</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6925679</guid><description>&lt;p&gt;First off, thank you all so much who have attended the very special gathering of dotNETwork user group, Code Camp ‘09, that took place in the British University in Cairo (BUE) during last Thursday and Friday. This has been one of the biggest events I have been talking in, and that was a great honor.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;&lt;u&gt;Must Say:&lt;/u&gt; SORRY! This post was supposed to be published Saturday or Sunday max. I have been busy making a critical decision and was not sure whether to announce it in this post or not.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can find the slides for the sessions I have been giving below:&lt;/p&gt;  &lt;h3&gt;Framework Design Guidelines&lt;/h3&gt;  &lt;div id="__ss_1056115" style="width: 425px; text-align: left"&gt;&lt;a title="Framework Design Guidelines" style="display: block; margin: 12px 0px 3px; font: 14px helvetica,arial,sans-serif; text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy/framework-design-guidelines?type=powerpoint"&gt;Framework Design Guidelines&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=framework-design-guidelines629&amp;amp;stripped_title=framework-design-guidelines" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=framework-design-guidelines629&amp;amp;stripped_title=framework-design-guidelines" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-size: 11px; padding-top: 2px; font-family: tahoma,arial; height: 26px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy"&gt;Mohamed_Meligy&lt;/a&gt;. (tags: &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/ooad"&gt;ooad&lt;/a&gt; &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/design-guidelines"&gt;design guidelines&lt;/a&gt;)&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Download (PPTX File):&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-8b294cbeeb45397e.skydrive.live.com/embedrowdetail.aspx/Events/dotNETwork/CodeCamp/CodeCamp09/Framework%20Design%20Guidelines.pptx" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;h3&gt;Managed Extensibility Framework(MEF)&lt;/h3&gt;  &lt;div id="__ss_1056134" style="width: 425px; text-align: left"&gt;&lt;a title="Managed Extensibility Framework (MEF)" style="display: block; margin: 12px 0px 3px; font: 14px helvetica,arial,sans-serif; text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy/managed-extensibility-framework-mef?type=presentation"&gt;Managed Extensibility Framework (MEF)&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=managed-extensibility-framework-mef3829&amp;amp;stripped_title=managed-extensibility-framework-mef" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=managed-extensibility-framework-mef3829&amp;amp;stripped_title=managed-extensibility-framework-mef" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-size: 11px; padding-top: 2px; font-family: tahoma,arial; height: 26px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy"&gt;Mohamed_Meligy&lt;/a&gt;. (tags: &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/dotnetwork"&gt;dotnetwork&lt;/a&gt; &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/meligy"&gt;meligy&lt;/a&gt;)&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Download (PPTX File):&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-8b294cbeeb45397e.skydrive.live.com/embedrowdetail.aspx/Events/dotNETwork/CodeCamp/CodeCamp09/Managed%20Extensibility%20Framework%20%7C5MEF%7C6.pptx" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;(Note: Links to the source code are in the last slide)&lt;/p&gt;  &lt;h3&gt;Notes On The Event&lt;/h3&gt;  &lt;p style="text-align: center"&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/image_67AEB782.png"&gt;&lt;font size="1"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="image" src="http://weblogs.asp.net/blogs/meligy/image_thumb_1B6335AF.png" width="644" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3399ff" size="1"&gt; &lt;/font&gt;    &lt;br /&gt;&lt;em&gt;&lt;font size="1"&gt;The speakers and dotNETwork Team&lt;/font&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The event went with a similar theme to Microsoft Middle east Developer's Conference, MDC, which became Egyptian Developers Conference, EDC, which used to take place annually in the beginning of February, but, is yet to happen this year. I’m not sure whether I should be happy or sad for the fact that many attendees came to the event thinking it’s organized by Microsoft as another replacement to MDC/EDC. To make this clear, Code Camp is organized by an independent user group of 11 organizers, known as dotNETwork group (I mentioned a lot in my blog), and was sponsored by Microsoft Egypt, and number of international companies (sponsoring foreign speakers transportation), and the British University in Egypt (BUE, hosting the event). All speakers (foreigners and Egyptians) are volunteers.&lt;/p&gt;  &lt;p&gt;Within tow days, with over 300 attendees, and over 10 speakers from both Egypt and world wide, and a great variety in topics, dotNETwork has excelled to make this a GREAT experience for everybody. This is one of the best events I have attended ever in general, which&amp;#160; compares with great improvement to the other best events/sessions I have ever attended/delivered: MDC 2005 (if you skip the Bill Gates pat!) and SilverKey Demo Day II.&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;Thank you very much dotNETwork and great attendance for the true nice time!&lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;PS. I have notes from the other sessions I have been to as an attendee not as a speaker. Those will be available by the ened of the week or beginning next week (God Willing). Hopefully this time I’ll make it in schedule.&lt;/p&gt;  &lt;h3&gt;Related Sites&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.slideshare.net/Mohamed_Meligy/slideshows"&gt;&lt;strong&gt;My Other Presentations on SlideShare&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnetwork.org/"&gt;&lt;strong&gt;Official dotNETwork Website&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/profile.php?id=544815169#/group.php?gid=2409268236"&gt;dotNETwork Facebook Group&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/dotnetworkorg/"&gt;dotNETwork Yahoo Group&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/event.php?eid=63066020983"&gt;The Event Page On Facebook&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/Mohamed/category/1351.aspx"&gt;&lt;strong&gt;Earlier &amp;quot;Local Events&amp;quot; Posts in My Blogs&lt;/strong&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2e73f079-a0ab-474e-86ce-648ed143f4c0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Local+Events" rel="tag"&gt;Local Events&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotNETwork" rel="tag"&gt;dotNETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NETwork" rel="tag"&gt;.NETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodeCamp" rel="tag"&gt;CodeCamp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+Camp" rel="tag"&gt;Code Camp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodeCamp09" rel="tag"&gt;CodeCamp09&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodeCamp'09" rel="tag"&gt;CodeCamp'09&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+Camp'09" rel="tag"&gt;Code Camp'09&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Framework+Design" rel="tag"&gt;Framework Design&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Guidelines" rel="tag"&gt;Guidelines&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Framework+Design+Guidelines" rel="tag"&gt;Framework Design Guidelines&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DI" rel="tag"&gt;DI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MEF" rel="tag"&gt;MEF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Managed+Extensibility+Framework" rel="tag"&gt;Managed Extensibility Framework&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6925679" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=RGE95ngfK7Y:iIwqrh9WD9g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=RGE95ngfK7Y:iIwqrh9WD9g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=RGE95ngfK7Y:iIwqrh9WD9g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=RGE95ngfK7Y:iIwqrh9WD9g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=RGE95ngfK7Y:iIwqrh9WD9g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=RGE95ngfK7Y:iIwqrh9WD9g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=RGE95ngfK7Y:iIwqrh9WD9g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/RGE95ngfK7Y" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6925679</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6925679</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/02/25/dotnetwork-codecamp-09-framework-design-guidelines-amp-managed-extensibility-framework-mef-slides-available.aspx</feedburner:origLink></item><item><title>Testing Your Website With Different Browser Versions (IE, Firefox, Safari)</title><link>http://feedproxy.google.com/~r/GuruStop/~3/nop0WXfE0a4/testing-your-website-with-different-browser-versions-ie-firefox-safari.aspx</link><category>Web Design</category><category>Misc</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Sun, 08 Feb 2009 00:45:38 PST</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6894912</guid><description>&lt;p&gt;In a response to local company email about IE 8 RC, I took some time to write an email to the internal mailing lists of Raya about testing websites with different browser versions. I found it good to share with the blog readers here, and, I know the company policy in Raya emphasizes sharing knowledge and efforts with the community.&lt;/p&gt;  &lt;p&gt;Here is the email I sent:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;For developer and QA testing I highly recommend using &lt;strong&gt;IE Tester &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://www.my-debugbar.com/wiki/IETester/HomePage"&gt;&lt;strong&gt;&lt;em&gt;http://www.my-debugbar.com/wiki/IETester/&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;img title="" alt="" src="http://www.my-debugbar.com/wiki/uploads/IETester/ietester-0.2.png" /&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;It enables testing the website against different versions of IE that users may be using to navigate to the website.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://portableapps.com/apps/internet/firefox_portable%23"&gt;&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;For testing Firefox, you can try the latest version only (because FF users usually update their browser and the rendering features are usually not that different), or you can have side by side installed versions, or different versions without installations by using &lt;strong&gt;Firefox Portable Edition &lt;a href="http://portableapps.com/apps/internet/firefox_portable"&gt;http://portableapps.com/apps/internet/firefox_portable&lt;/a&gt;&lt;/strong&gt; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;img alt="http://portableapps.com/files/images/screenshots/firefox_portable_small.png" src="http://portableapps.com/files/images/screenshots/firefox_portable_small.png" /&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;For Testing Safari, you can use &lt;strong&gt;Safari for Windows &lt;/strong&gt;&lt;/em&gt;&lt;a href="=http://www.apple.com/safari/&amp;quot;"&gt;&lt;strong&gt;&lt;em&gt;http://www.apple.com/safari/&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;em&gt;, and/or &lt;strong&gt;Google Chrome &lt;/strong&gt;&lt;/em&gt;&lt;a href="https://mail.rayacorp.com/exchweb/bin/redir.asp?URL=http://www.google.com/chrome/"&gt;&lt;strong&gt;&lt;em&gt;http://www.google.com/chrome/&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;em&gt; (it uses the same rendering engine as Safari).&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note that in certain cases, you may not need to do all of these. For example, when the website is set to run on a local company intranet, you may be knowing from the customer that users are using one of two of three versions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is probably VERY old piece of information to the most of us, but I hope it can be useful to someone out there!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:00bc2484-791a-474e-a329-dbccb6e67dbb" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/IE" rel="tag"&gt;IE&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IETester" rel="tag"&gt;IETester&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Internet+Explorer" rel="tag"&gt;Internet Explorer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IE8" rel="tag"&gt;IE8&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firefox" rel="tag"&gt;Firefox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FF" rel="tag"&gt;FF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firefox+Portable" rel="tag"&gt;Firefox Portable&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Safari" rel="tag"&gt;Safari&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Chrome" rel="tag"&gt;Chrome&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google+Chrome" rel="tag"&gt;Google Chrome&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Testing" rel="tag"&gt;Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+Design" rel="tag"&gt;Web Design&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Webmaster" rel="tag"&gt;Webmaster&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6894912" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=nop0WXfE0a4:62cDvhSHxmY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=nop0WXfE0a4:62cDvhSHxmY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=nop0WXfE0a4:62cDvhSHxmY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=nop0WXfE0a4:62cDvhSHxmY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=nop0WXfE0a4:62cDvhSHxmY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=nop0WXfE0a4:62cDvhSHxmY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=nop0WXfE0a4:62cDvhSHxmY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/nop0WXfE0a4" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6894912</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6894912</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/02/08/testing-your-website-with-different-browser-versions-ie-firefox-safari.aspx</feedburner:origLink></item><item><title>By the way, I got married. She’s a really really nice lady :)</title><link>http://feedproxy.google.com/~r/GuruStop/~3/BzPCKGQQDAA/by-the-way-i-got-married-she-s-a-really-really-nice-lady.aspx</link><category>Personal</category><category>News</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Sun, 08 Feb 2009 00:17:51 PST</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6894907</guid><description>&lt;h3&gt;The “BTW” Announcement&lt;/h3&gt;  &lt;p&gt;Hey guys, remember when I posted &lt;a href="http://weblogs.asp.net/meligy/archive/2008/07/26/i-now-wear-a-ring-it-has-mona-s-name-on-it-this-is-big.aspx"&gt;my engagement to Mona&lt;/a&gt;, the cute smart kind beautiful super cool sweetie?&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Well, we have got married :).&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/meligy/wedding4Copy_013BC1D3.jpg"&gt;&lt;img title="wedding4 - Copy" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="500" alt="wedding4 - Copy" src="http://weblogs.asp.net/blogs/meligy/wedding4Copy_thumb_654A8CDA.jpg" width="538" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It was on Friday, January 23rd. I’m writing this after the honeymoon vacation, which was practically a honey half moon vacation, due to work conditions in this speed world!&lt;/p&gt;  &lt;h3&gt;So, how is that going?&lt;/h3&gt;  &lt;p&gt;Based on my small experience so far, I’d answer a question some friends asked on mobile phone…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;YES, marriage is GREAT&lt;/strong&gt;, but of course only when you marry the perfect person that best fills in all your feelings. It’s very hard to find. Usually, you don’t search for that; you just find THE ONE accidentally. When you do, you know it, and your life becomes just nice, and, all fun. If you don’t, God be in your help.&lt;/p&gt;  &lt;p&gt;Thankfully, I have found my one, and I can assure you, life with her is really sweet. I truly feel like I need nothing from this world when we are sitting together at home. This girl just rocks :).&lt;/p&gt;  &lt;h3&gt;To Mona, The Masterpiece of My Life&lt;/h3&gt;  &lt;p&gt;Thank you very much Mona for being in my life with all your blesses, and all the increasing happiness they bring with them. I hope we’ll be always happy (God Willing). With you, it feels like an easy wish.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Love you so much&lt;/strong&gt;. You empower all my abilities.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;N.B.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When I look back, I find it very weird that I didn’t submit this to the weblog by wedding time. This facebook thing is making things quite weird, while the whole technical thing is making things weirder. I have found that a &lt;a href="http://www.facebook.com/event.php?eid=59269122418"&gt;facebook event&lt;/a&gt;, along with some SMS messages were almost enough for most contacts to attend the wedding ceremony (It was a good way to collect friend pictures afterwards as well – thanks for the cool friends who posted their pictures there).&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7628b2a3-a8df-4a90-99dc-7c8ef62c1805" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/wedding" rel="tag"&gt;wedding&lt;/a&gt;,&lt;a href="http://technorati.com/tags/marriage" rel="tag"&gt;marriage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mona" rel="tag"&gt;Mona&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MomOn" rel="tag"&gt;MomOn&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mohamed+Meligy" rel="tag"&gt;Mohamed Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mona+Mohammed" rel="tag"&gt;Mona Mohammed&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Meligy" rel="tag"&gt;Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/News" rel="tag"&gt;News&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Social+News" rel="tag"&gt;Social News&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6894907" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=BzPCKGQQDAA:zOb9ObcNyu0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=BzPCKGQQDAA:zOb9ObcNyu0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=BzPCKGQQDAA:zOb9ObcNyu0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=BzPCKGQQDAA:zOb9ObcNyu0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=BzPCKGQQDAA:zOb9ObcNyu0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=BzPCKGQQDAA:zOb9ObcNyu0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=BzPCKGQQDAA:zOb9ObcNyu0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/BzPCKGQQDAA" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6894907</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6894907</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2009/02/08/by-the-way-i-got-married-she-s-a-really-really-nice-lady.aspx</feedburner:origLink></item><item><title>dotNETwork 10th: Architecture Speaking for Itself (DI / AOP)</title><link>http://feedproxy.google.com/~r/GuruStop/~3/pX_20G61gXs/dotnetwork-10th-architecture-speaking-for-itself-di-aop.aspx</link><category>Patterns</category><category>dotNETwork</category><category>Local Events</category><category>Architecture</category><category>.NET</category><category>Domain Driven Design</category><category>DI &amp;amp; IoC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Sun, 28 Dec 2008 18:11:00 PST</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6808538</guid><description>&lt;h3&gt;As ever, there’s &lt;/h3&gt;  &lt;h3&gt;The usual intro …&lt;/h3&gt;  &lt;p&gt;The &lt;a href="http://dotnetwork.org" mce_href="http://dotnetwork.org"&gt;.NETwork&lt;/a&gt; day for December that took place this Saturday as the 10th group gathering/event was pretty much worth being the day that makes a whole year for .NETwork group, which started December 2007. The day was pretty much different than usual, maybe similar to the very first gathering in organization, and some other days in topic, but the style and taste was a bit different. Pretty much concentrated, although on a variety of topics.&lt;/p&gt;  &lt;p&gt;The day was just a couple of sessions. Love it or hate it, no parallelism there. The sessions were given by a single speaker, &lt;a href="http://omarbesiso.net/" mce_href="http://omarbesiso.net/"&gt;Omar Besiso&lt;/a&gt;, a half Egyptian senior Architect living in Australia, a consultant, Tech Ed presenter, book editor and reviewer – a very great guy as I’ll explain later :).&lt;/p&gt;  &lt;p&gt;Actually I really enjoyed the first session. Really want to attend / give many similar sessions in the future.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;font color="#880000"&gt;Warning:&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#880000"&gt;I have not been very honest while writing this! Since I have a similar interest in the topics discussed during the session, I have written some parts of the post that were not said during the presentation the same way,a and provided some examples and such that represent my own understanding which may or may not be the same as Omar’s.&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Lets give it a strong start :-) …&lt;/h3&gt;  &lt;h4&gt;&lt;i&gt;… On Architecture&lt;/i&gt;&lt;/h4&gt;  &lt;p&gt;“Who here is an architect, or works as an architect?”&lt;/p&gt;  &lt;p&gt;Having a very quick meal just before entering getting us exactly a minute late (me and Mohamed Samy, my dear friend, without getting lost in the way this time), and before we finish plugging in our laptops and firing OneNote, we were hit by the question as the true start of the session. &lt;/p&gt;  &lt;p&gt;Of course I and M. Samy stood for it. This led us to talking about what an architect does exactly. the short answer is “everything”. He designs applications, interfacing between those applications. He meets customer. He still writes code and maybe Prototype or Proof of Concept. But there are &lt;a href="http://en.wikipedia.org/wiki/Chief_Software_Architect#Types_of_software_architects" mce_href="http://en.wikipedia.org/wiki/Chief_Software_Architect#Types_of_software_architects"&gt;types of software architects&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Solution Architect: Close to the team decided to work on the solution, performs architecture for a specific solution. &lt;/li&gt;    &lt;li&gt;Enterprise Architect: This is the one that does everything communications to the office boy and to the CEO. In other words, he handles the solution from the very beginning of whether to have a single solution or series of connected ones. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That talk was before Omar introduces his work-in-progress book “Reactive Programming &amp;amp; Domain Driven Design”, speaking on himself as a “Not technologist.,, but very low Java IQ” (It was interesting to know such exists!). This means that he has no special feeling about any specific .NET technology, or a language, and this is very important, to be able to mentally choose the right technology for the right situation (he made another statement that he uses SharePoint whenever the budget allows, plain ASP.NET only otherwise, which is another interesting topic). However, this is all on top of the .NET platform, as “The technology-Independent architecture that we heard of in the 90s is no longer a fact”.&lt;/p&gt;  &lt;h4&gt;… On Architecture Myths and Data Driven Architecture&lt;/h4&gt;  &lt;p&gt;Those are the things most people believe in and do, while are no longer relevant to today’s and future architecture.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Myth No.1: 3 Tier Architecture      &lt;ul&gt;       &lt;li&gt;You know this&amp;nbsp; UI –&lt;b&gt;&amp;gt;&lt;/b&gt; Business &lt;b&gt;-&amp;gt;&lt;/b&gt; Data thingy! &lt;/li&gt;        &lt;li&gt;Of course we today know we need other layers &lt;/li&gt;        &lt;li&gt;How about logging, where does it fit here. Object Pooling, etc… &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Myth No.2: N Tier Architecture      &lt;ul&gt;       &lt;li&gt;There are so many styles, but usually that’s what it ends to: UI &lt;b&gt;-&amp;gt;&lt;/b&gt; External Service –&lt;b&gt;&amp;gt;&lt;/b&gt; Business –&lt;b&gt;&amp;gt;&lt;/b&gt; Internal Service –&lt;b&gt;&amp;gt;&lt;/b&gt; Data &lt;/li&gt;        &lt;li&gt;The point is, as in the next myth, that is all goes in circles around data. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Myth No.3: Data Driven Architecture      &lt;ul&gt;       &lt;li&gt;Bring the DB, fire up the DAL generator, build some “business” that just calls this and bake some UI for it. &lt;/li&gt;        &lt;li&gt;The argument here was: what if you do not have exactly a database. How about things like Office or Photoshop or so. &lt;/li&gt;        &lt;li&gt;“We use CodeSmith/.NETTiers as our architecture” What a statement. Is code generation exactly an architecture? &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Myth No.4: Architecture and design are an overhead      &lt;ul&gt;       &lt;li&gt;Architecture is like an investment. Omar quotes: “If every investment is an overhead, it’s time to sell your assets”. To be fair, I mention he has been working with big projects of hundreds of developers still in one project. &lt;/li&gt;        &lt;li&gt;The point is about maintenance and updates that takes most of the real time of a project. It’s about responding to change, and the time it takes to actually do respond to that change.          &lt;ul&gt;           &lt;li&gt;For example, for an interest rate value to change, this may be as easy in your design as changing a configuration value, but, how about changing the way this interest rate value is used or the interest way of calculation? &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Side Arguments:          &lt;ul&gt;           &lt;li&gt;A bad architecture can cost an entire rewrite of the whole solution from scratch not even parts of it. Sometimes if things go bad such a decision is the right one to have. &lt;/li&gt;            &lt;li&gt;No university on earth teaches the “right” software engineering! Even MIT has hundreds of methodologies, that you don;t know which to follow. &lt;/li&gt;            &lt;li&gt;“Do not let a software engineer build your house”, you cannot afford a bug or rebuild in there ;). &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Clearly, Omar is against the Database-First approach. I heard the same things many time on ALT.NET threads, and it takes many posts to talk about without much benefit, but anyway, Omar’s main argument is that you heart your model (say the classes you use to represent types of business objects, like “Product”, “Customer”, etc) so much when it is just a representation of your database row. &lt;/p&gt;  &lt;p&gt;If you change a column in your database for whatever database performance reason, and the model class is a serializable one, and then you de-serialize an objec serialized before change. How will you manage that? (I actually had the same exact situation before, with an object serialized to be persisted in Windows Workflow and de-serialized after months where the class changed due to coupling to the DB).&lt;/p&gt;  &lt;h4&gt;&lt;i&gt;… On General Guidance&lt;/i&gt;&lt;/h4&gt;  &lt;p&gt;Here came some general notes on achieving in software. Software NEEDS to be (just as in those old computer science books):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Highly &lt;a href="http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29" mce_href="http://en.wikipedia.org/wiki/Cohesion_(computer_science)"&gt;Cohesive&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Loosely &lt;a href="http://en.wikipedia.org/wiki/Coupling_%28computer_science%29" mce_href="http://en.wikipedia.org/wiki/Coupling_(computer_science)"&gt;Coupled&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Hardware Independent      &lt;ul&gt;       &lt;li&gt;Not that it works on PC and Mac :) &lt;/li&gt;        &lt;li&gt;But that it (as much as possible) works on 1-processor single machine to a farm or cloud of servers with so many logical and physical processors in them. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Reliable &lt;/li&gt;    &lt;li&gt;Performing      &lt;ul&gt;       &lt;li&gt;Concepts have changed here. People now no longer apply a rule like “reflection is too expensive to use in our applications” (and many great things we see today use reflection heavily in their core) &lt;/li&gt;        &lt;li&gt;Odd enough but works: In many situations, when you have issues with performance, you just put more RAM (Hardware in general) into it until later you fix/re-factor. &lt;a href="http://www.codinghorror.com/blog/archives/001198.html" mce_href="http://www.codinghorror.com/blog/archives/001198.html"&gt;Hardware is cheaper than programmers&lt;/a&gt;. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Maintainable      &lt;ul&gt;       &lt;li&gt;This is what today’s designs and patterns focus on most. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In general, software is developed to fulfill certain needs. It need to be architected and planned to fulfill those needs. Software needs to be:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Envisioned &lt;/li&gt;    &lt;li&gt;Planned &lt;/li&gt;    &lt;li&gt;Executed &lt;/li&gt;    &lt;li&gt;Adapted &lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;&lt;i&gt;… On Layering With Recent Architecture&lt;/i&gt;&lt;/h4&gt;  &lt;p&gt;Then Omar went on talking about architecture in a bit weird way. He went through architecture of the future, and afterwards, of today. &lt;/p&gt;  &lt;p&gt;Here’s how he sees architecture of the future:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Subsequent of the past      &lt;ul&gt;       &lt;li&gt;New Tools, Old Patterns          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://www.dofactory.com/Patterns/Patterns.aspx" mce_href="http://www.dofactory.com/Patterns/Patterns.aspx"&gt;Design patterns&lt;/a&gt; have been there for years. &lt;/li&gt;            &lt;li&gt;The best way to describe Service Oriented Architecture (&lt;a href="http://msdn.microsoft.com/en-us/library/aa480021.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa480021.aspx"&gt;SOA&lt;/a&gt;) is in terms of component oriented design, the same concepts of the old COM+. &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc707905.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc707905.aspx"&gt;Service Locator&lt;/a&gt; and Dependency Injection are just glorified factory patterns. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Destruction of religious discussions      &lt;ul&gt;       &lt;li&gt;Religious Discussions          &lt;ul&gt;           &lt;li&gt;Dynamic Queries vs Stored Procedures &lt;/li&gt;            &lt;li&gt;C# vs VB &lt;/li&gt;            &lt;li&gt;Plain ASP.NET vs SharePoint &lt;/li&gt;            &lt;li&gt;….. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;As mentioned before, do not special feelings about a certain technology. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To reach this, that’s how an “Architecture of the Present” consists of for Omar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Consumer      &lt;ul&gt;       &lt;li&gt;ASP.NET, WPF, …          &lt;ul&gt;           &lt;li&gt;Note that a WCF service that depends on another service or solution is also a consumer of that &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Needs to talk to black box that has the engine          &lt;ul&gt;           &lt;li&gt;Knows nothing about implementation, just a contract &lt;/li&gt;            &lt;li&gt;Normally you should be easily swapping implementations (contents of the black box) while keeping the interface(AKA, the box). &lt;/li&gt;            &lt;li&gt;Black box is only DLLs, with no tech, not It’s not SharePoint not anything, the only dependency for it is .NET framework.              &lt;ul&gt;               &lt;li&gt;I asked Omar how do you test and mock work that you do in MOSS (SharePoint), he said that it’s usually just dump code that calls WCF services that are actually the front faces of all the real operations. &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Domain      &lt;ul&gt;       &lt;li&gt;Entities and Services          &lt;ul&gt;           &lt;li&gt;Entities are the model, again, the “Product”, “Customer”, etc. To explain I tell you they do NOT contain anything except their own knowledge. No persistence or such. &lt;/li&gt;            &lt;li&gt;Service are:              &lt;ul&gt;               &lt;li&gt;Data Services (“UpdateCustomerRecord”) &lt;/li&gt;                &lt;li&gt;Business Services (“CalculateDailyReport”) &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Core      &lt;ul&gt;       &lt;li&gt;The very basic entities and interfaces for the services &lt;/li&gt;        &lt;li&gt;The contracts live here, the implementation goes to the domain. &lt;/li&gt;        &lt;li&gt;Say this is a VS Class Library Project. Then this will be the only Project that does NOT depend on other Projects in the Solution, and mostly all other Projects will be depending on it. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Aspects      &lt;ul&gt;       &lt;li&gt;Cross Cutting Concerns, the things you perform/need for almost every solution          &lt;ul&gt;           &lt;li&gt;Validation &lt;/li&gt;            &lt;li&gt;Security &lt;/li&gt;            &lt;li&gt;Logging &lt;/li&gt;            &lt;li&gt;… &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;They should be implemented in a way that provides consistency path. So that developers are not confused when writing it. &lt;/li&gt;        &lt;li&gt;Omar says those should be injected. We’ll see how next. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Only now after defining those, Omar tends to create the database. &lt;/li&gt;    &lt;li&gt;Then comes the actual service implementation.      &lt;ul&gt;       &lt;li&gt;He uses dependency injection to makes the consumer just calls the domain via the contracts (interfaces) to and then the implementation gets injected. &lt;/li&gt;        &lt;li&gt;For Aspects, he uses Aspect Oriented Programming (AOP) / Policy Injection to save the developer from writing those for every method / property. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;&lt;i&gt;… On Dependency Injection&lt;/i&gt;&lt;/h4&gt;  &lt;p&gt;Dependency is about interface oriented programming:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Core will have its IService interface &lt;/li&gt;    &lt;li&gt;The domain will have its ServiceImplementation class that implements the interfacen. &lt;/li&gt;    &lt;li&gt;The consumer will NOT reference the domain directly. It’ll call “something” called Dependency Container that returns an instance of that interface. &lt;/li&gt;    &lt;li&gt;The container is then configured to return an instance of ServiceImplementation whenever it’s asked for an IService. &lt;/li&gt;    &lt;li&gt;Normally you wouldn’t have interfaces for entities (just the services).      &lt;ul&gt;       &lt;li&gt;So, you might not have IProduct interface, but most likely you have an IProductRepository (a data service for Product). &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Think of contracts for your day-to-day services. Say a Plane Ticket. This is an API, an interface. It has Date, class of food provided, flight no., etc…, but it knows nothing about the exact physical plane that will hold this number, how it works, or the name of its captain, because this is all implementation detail.&lt;/p&gt;  &lt;p&gt;This guarantees ease of changing the implementation (say replacing the plane itself). Services need to be designed by the architect. Of course they all reference the core (which holds the contracts), hence you can easily have other service implementations later.Note that the entities implementations are just testable unit/implementations on their own with no special dependency/reference&lt;/p&gt;  &lt;p&gt;Again, the cores references nothing,and most other layers reference it. That’s why internal dependencies need to be defined. This is what products like NDepend provide today and what VS 2010 is going to have built-in.&lt;/p&gt;  &lt;h5&gt;… … The Service Locator&lt;/h5&gt;  &lt;p&gt;This is just a factory. It’s job is to locate the service implementation (I’d ask you to imagine a GetProductService function with return of type an IProductService as a service locator). That’s how the consumer never talks to the domain. It calls a Service Locator to get a reference to the service without knowing anything about the service except its interface that lives in the core.&lt;/p&gt;  &lt;p&gt;There’re two ways the locator can locate and return the desired service. The service type may be written down in some configuration file and it uses reflection or so to get it, or it can perform some other code logic to get the service (which can be as easy as loading some service assembly and getting a specific class from it). &lt;/p&gt;  &lt;p&gt;There is no standard for implementing the locators. You may want to provide a singleton object (have a single ProductService and return it every time an IProductService is requested rather than creating a new object for every call). You may want to cache the object for a certain period.So, implementation does differ.&lt;/p&gt;  &lt;h5&gt;&lt;i&gt;… … The Dependency Injection&lt;/i&gt;&lt;/h5&gt;  &lt;p&gt;What dependency injection adds to implementing a service is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Standard      &lt;ul&gt;       &lt;li&gt;You have a certain library that you call to get the dependency (service). You configure this library for your specific needs. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Turns Service Locator into Glorified Smart Factory      &lt;ul&gt;       &lt;li&gt;It can do more functionality, and it has been tried. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;It can crate an entire chain of objects, not just one.      &lt;ul&gt;       &lt;li&gt;What if you have (and this is not an accurate example or best-to-do) an IOrderService that has one property of type IShippingService, and you want to create the order service and the dependencies of Order service itself. A dependency container library should provide you with a way to define in the same place what order service to use, and what shipping service to use with this specific order service. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;There’re main libraries for it      &lt;ul&gt;       &lt;li&gt;Castle (Windsor) &lt;/li&gt;        &lt;li&gt;Structure Map &lt;/li&gt;        &lt;li&gt;Spring.NET &lt;/li&gt;        &lt;li&gt;Enterprise Library (Unity) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;The style is simple, you have a component (any kind of consumer code), it calls a configured dependency container, and this container returns a ready-to-use instance. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To demonstrate this, Omar presented a demo of an IProcessor interface with only a single method: ProcessMessage and a single property SubProcessor of type ISubProcessor, ISubProcessor also has a single method ProcessToConsole. Each of the methods takes a single parameter “”Message” to process.&lt;/p&gt;  &lt;p&gt;Now the service factory is easy to create. Using Unity, that’s just a few lines of configuration copied from documentation. The implementation is pretty easy too. Just write the classes Implementation1,Implementation2 that indicate (by simple writing to Console) they were created and called and then pass the message to the sub processors, SubImplementation1, SubImplementation2 that also just indicate they were created and called.&lt;/p&gt;  &lt;p&gt;The console program that acts as a consumer was also easy. It has some code like:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;IProcessor processor = ServiceFactory.GetProcessor();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;processor.ProcessMessage(“The message”);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So, hrere you seethe consumer just talks to the service locator. In the app.config file we tell what implementation to call when asked for IProcessor and when defining that tell it also what to return for ISubPorocessor. To demonstrate, Omar showed calling Implementation1 with SubImplementation2, Implementation2 with SubImplementation2, and even showed that Implementation1 with SubImplementation2 would just work. And run this on the console to see it actually did work.&lt;/p&gt;  &lt;h3&gt;… On Policy Injection&lt;/h3&gt;  &lt;p&gt;As mentioned earlier, the policy injection is a pattern that handles cross cutting concerns, the normal things in all projects. Exception Handling, Logging, and Exception Handling would make it for great examples. They’re things shat we shouldn’t be writing code for them everyday!&lt;/p&gt;  &lt;p&gt;The way you do this is by using a global handlers that you inject them (say as you do in dependency injection or by putting Attributes on the thing you want to inject into, which is [in OVERLY simplified manner] Aspect Oriented Oriented Programming). Then have then create events that you implement handlers for. Those handlers become the single place to write your policy code (the logging, exception handling, authorization check, etc..).&lt;/p&gt;  &lt;p&gt;There are of course frameworks that help you doing this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Castle (Windsor) &lt;/li&gt;    &lt;li&gt;PostSharp (Code Contracts in .NET 4) &lt;/li&gt;    &lt;li&gt;Enterprise Library (Policy Injection Block) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The idea of using is similar. The consumer creates object from a factory, then this instance gets a proxy class created around it (similar to the proxy class that gets created when you have a plain old ASMX web service, anyway, it depending on the library and whether it works in runtime or compile time) around the object, and have events in every property/method in that proxy, then others can subscribe to those events later to inject their policies.&lt;/p&gt;  &lt;p&gt;To illustrate, Omar presented another demo. He had a Calculator class (that of course implements an ICalculator) with one method SubtractTwo(number) that just does as its name says (subtract 2 from the given parameter), and showed how to use the Enterprise Library Policy Injection to put a logging handler for it that was set in conifg for all objects of type ICalculator. That’s how the policy is applied to all objects from configuration while the consumer got the ICalculator object itself normally by asking a service factory to create it.&lt;/p&gt;  &lt;p&gt;So, as per Omar, that’s how you would do it (like other parts in the post, made longer to illustrate more):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configure what implementation to attach for the specified contract &lt;/li&gt;    &lt;li&gt;Configure what aspects to to have along with entities and services that implement this contract &lt;/li&gt;    &lt;li&gt;Create the the actual implementation of the attached service &lt;/li&gt;    &lt;li&gt;Wrap it with the chosen aspects. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Omar also showed another demo. A real life code from a real customer (one of the big customers he has been working with). We saw the –now– normal stuff, the core that references no one (with interfaces, aggregates, and service contracts in it) , the services either business (which We things like SomethingEngine or SomethingManager,…), or data (which were called Repositories – as usual in similar architectures).&lt;/p&gt;  &lt;h3&gt;… On Summing up&lt;/h3&gt;  &lt;p&gt;On summing up,Omer emphasized:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do not code logging (and such) over and over again &lt;/li&gt;    &lt;li&gt;Watch for performance, moderately &lt;/li&gt;    &lt;li&gt;Go for standards      &lt;ul&gt;       &lt;li&gt;Use Standard Frameworks, not no name ones (DISCLAIMER, that’s Omer speaking). &lt;/li&gt;        &lt;li&gt;Standardize your own frameworks. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have the feeling that I didn’t include everything here, especially some side talks that were worth noting (some are noted). It was a great session with some discussions that are rarely there except in very small groups. Again, I really want to bring similar discussions, either as a speaker or an attendee.&lt;/p&gt;  &lt;h3&gt;Then came the open sesion …&lt;/h3&gt;  &lt;p&gt;Well, This one was an open session. I haven’t seen a “bad” open session in Egypt, but also never saw one that would meet my standards for “Successful”, “effective” or such …&lt;/p&gt;  &lt;p&gt;There wasn’t much audience this time (Which is really funny and always happened! Seeing that a vast majority of the attendees are students, when the sessions are prepared to meet this level, the audience that attends happens to include many high rank developers. As you may have guessed, when the sessions are prepared to meet this advanced level …. Yeah, only the junior ones are there. This is another post on its own!).&lt;/p&gt;  &lt;p&gt;This time the audience was ready for the session but much fewer than it should have. The open talk session didn’t have much talk then more than a demo that shows Tech ED domo on how to use the MS Reporting Services 2008 Report Viewer to create a report from scratch, publish it to your server, and export it to MS Word n less than 5 minutes. Not something that would impress me personally when it has the “less than 5 minutes” in it and Omar himself said a simple report in reality would take around half an hour to design. &lt;/p&gt;  &lt;p&gt;The other talks were all like “”What do you think about using the X… technology in Y…. situations”. It was limited to one-hour session anyway due to accidently tight buses seclude.&lt;/p&gt;  &lt;p&gt;Some things that are good for example are mentioning the models of doing software in/outside the cloud (topic brought by Mohamed Samy).Omar said those are the common themes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I build software and build data &lt;/li&gt;    &lt;li&gt;The two at Microsoft (or whatever provider) &lt;/li&gt;    &lt;li&gt;Data is here but the software is by another provider &lt;/li&gt;    &lt;li&gt;Data by vendor and he's liable to it      &lt;ul&gt;       &lt;li&gt;By looking at the terms and statements of Windows Azure, Omar says he found nothing that expresses liability from Microsoft’s side. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, when someone asked him whether to use WPF or Win Forms for desktop “Business” applications. He said he uses WPF for all his applications, for business applications he has a WPF theme that looks just like Win Forms. He explains why he does it this way:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WPF works directly on the GPU. &lt;/li&gt;    &lt;li&gt;XAML is a great language, same like HTML but without all the browsers headache and even better syntax. &lt;/li&gt;    &lt;li&gt;Basically a business application does not have complex UI requirements, but, if some are requested, a WPF application is ready. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;He also mentioned the best way to learn .NET is to open reflector, browse the namespaces and see the code for anything whose name grabs your attention. An example is how Serializable attribute is implemented, it’s just an enum :). another example is how to implement an Object Pool. So that for example whenever an object is requested, no more than say 5 instances are created and reused in later requests. Before you think about the implementation, it’s just there in the BCL,in System.EnterpriseServices.ObjectPool. Just have an ObjectPool with Max set to 5 and you are done with it :) :).&lt;/p&gt;  &lt;p&gt;It was a really great day. Thanks a lot, Omar.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9a9b0984-9506-452c-93df-f756b1d43201" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NETwork" rel="tag"&gt;.NETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotNETwork" rel="tag"&gt;dotNETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AOP" rel="tag"&gt;AOP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DI" rel="tag"&gt;DI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Local+Events" rel="tag"&gt;Local Events&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dependency+Injection" rel="tag"&gt;Dependency Injection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Aspect+Oriented+Programing" rel="tag"&gt;Aspect Oriented Programing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PI" rel="tag"&gt;PI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Policy+Injection" rel="tag"&gt;Policy Injection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architecture" rel="tag"&gt;Architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Unity" rel="tag"&gt;Unity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Castle" rel="tag"&gt;Castle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Patterns" rel="tag"&gt;Patterns&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OOP" rel="tag"&gt;OOP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Omar+Besiso" rel="tag"&gt;Omar Besiso&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mohamed+Meligy" rel="tag"&gt;Mohamed Meligy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mohamed+Samy" rel="tag"&gt;Mohamed Samy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architecture+Myth" rel="tag"&gt;Architecture Myth&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6808538" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=pX_20G61gXs:jpV_sVYbFV4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=pX_20G61gXs:jpV_sVYbFV4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=pX_20G61gXs:jpV_sVYbFV4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=pX_20G61gXs:jpV_sVYbFV4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=pX_20G61gXs:jpV_sVYbFV4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=pX_20G61gXs:jpV_sVYbFV4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=pX_20G61gXs:jpV_sVYbFV4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/pX_20G61gXs" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6808538</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6808538</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2008/12/29/dotnetwork-10th-architecture-speaking-for-itself-di-aop.aspx</feedburner:origLink></item><item><title>Slides for dotNETwork 9th: Applying DDD on Asp.net MVC – Part 1: Asp.net MVC</title><link>http://feedproxy.google.com/~r/GuruStop/~3/f6ZMdpkVfsE/slides-for-dotnetwork-9th-applying-ddd-on-asp-net-mvc-part-1-asp-net-mvc.aspx</link><category>ASP.NET</category><category>dotNETwork</category><category>Local Events</category><category>MVC</category><category>.NET</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohamed Meligy</dc:creator><pubDate>Sat, 29 Nov 2008 23:41:31 PST</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6760549</guid><description>&lt;p&gt;Thank you all for attending my “&lt;a href="http://weblogs.asp.net/meligy/archive/2008/11/15/dotnetwork-9th-gathering-domain-driven-design-asp-net-mvc-you-know-tada-tada.aspx"&gt;Applying Domain Driven Design on Asp.net MVC&lt;/a&gt;” session. It’s interesting how things went that we got a bit deep into the ASP.NET MVC framework and have achieved the geeky talk goal via covering the other aspects of ASP.NET. Even that this took the entire session, it is nice that it could benefit the attendance.&lt;/p&gt;  &lt;p&gt;I am not sure whether we can arrange another session for Domain Driven Design fundamentals and combining that in the same project while using the MVC pattern and ASP.NET Framework. If you are interested in a similar session, please contact me via this blog or email.&lt;/p&gt;  &lt;h3&gt;Session Slides&lt;/h3&gt;  &lt;p&gt;Here are the slides for this session:&lt;/p&gt;  &lt;div id="__ss_801876" style="text-align: center"&gt;&lt;a title="Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC" style="display: block; margin: 12px 0px 3px; font: 14px helvetica,arial,sans-serif; text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy/applying-domain-driven-design-on-aspnet-mvc-part-1-aspnet-mvc-presentation?type=powerpoint"&gt;Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=ddd-mvc-part-1-mvc-1228029984950319-9&amp;amp;stripped_title=applying-domain-driven-design-on-aspnet-mvc-part-1-aspnet-mvc-presentation" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=ddd-mvc-part-1-mvc-1228029984950319-9&amp;amp;stripped_title=applying-domain-driven-design-on-aspnet-mvc-part-1-aspnet-mvc-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-size: 11px; padding-top: 2px; font-family: tahoma,arial; height: 26px"&gt;View SlideShare &lt;a title="View Applying Domain Driven Design on Asp.net MVC – Part 1: Asp.net MVC on SlideShare" style="text-decoration: underline" href="http://www.slideshare.net/Mohamed_Meligy/applying-domain-driven-design-on-aspnet-mvc-part-1-aspnet-mvc-presentation?type=powerpoint"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration: underline" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/mvc"&gt;mvc&lt;/a&gt; &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/aspnetmvc"&gt;aspnetmvc&lt;/a&gt;)&lt;/div&gt; &lt;/div&gt;  &lt;h3&gt;Sample Code&lt;/h3&gt;  &lt;p&gt;For the &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/ZIP/PC21.ZIP"&gt;HaackOverflow code sample&lt;/a&gt; and another great presentation about ASP.NET MVC, check the PDC 2008 session: “&lt;a href="http://channel9.msdn.com/pdc2008/PC21/"&gt;ASP.NET MVC: A New Framework for Building Web Applications&lt;/a&gt;”.&lt;/p&gt;  &lt;h3&gt;Related Sources&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.slideshare.net/Mohamed_Meligy/slideshows"&gt;&lt;strong&gt;My Other Presentations on SlideShare&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/event.php?eid=32256529483"&gt;The 9th Gathering Facebook Event&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/profile.php?id=544815169#/group.php?gid=2409268236"&gt;dotNETwork Facebook Group&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/dotnetworkorg/"&gt;dotNETwork Yahoo Group&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnetwork.org/"&gt;Official dotNETwork Website&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/Mohamed/category/1351.aspx"&gt;&lt;strong&gt;Earlier &amp;quot;Local Events&amp;quot; Posts in My Blogs&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:75381a2b-13d7-4ae8-87cc-f05c84ce933f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/aspnet+MVC" rel="tag"&gt;aspnet MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/asp.net+mvc" rel="tag"&gt;asp.net mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/aspnet" rel="tag"&gt;aspnet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mvc" rel="tag"&gt;mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Local+Events" rel="tag"&gt;Local Events&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotNETwork" rel="tag"&gt;dotNETwork&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.network" rel="tag"&gt;.network&lt;/a&gt;,&lt;a href="http://technorati.com/tags/usergroup" rel="tag"&gt;usergroup&lt;/a&gt;,&lt;a href="http://technorati.com/tags/usergroups" rel="tag"&gt;usergroups&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ddd" rel="tag"&gt;ddd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Domain+Driven+DesignDesign" rel="tag"&gt;Domain Driven DesignDesign&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6760549" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=f6ZMdpkVfsE:ApKN3HH4suU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=f6ZMdpkVfsE:ApKN3HH4suU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=f6ZMdpkVfsE:ApKN3HH4suU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=f6ZMdpkVfsE:ApKN3HH4suU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=f6ZMdpkVfsE:ApKN3HH4suU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/GuruStop?a=f6ZMdpkVfsE:ApKN3HH4suU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/GuruStop?i=f6ZMdpkVfsE:ApKN3HH4suU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/GuruStop/~4/f6ZMdpkVfsE" height="1" width="1"/&gt;</description><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/rsscomments.aspx?PostID=6760549</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/meligy/commentapi.aspx?PostID=6760549</wfw:comment><feedburner:origLink>http://weblogs.asp.net/meligy/archive/2008/11/30/slides-for-dotnetwork-9th-applying-ddd-on-asp-net-mvc-part-1-asp-net-mvc.aspx</feedburner:origLink></item></channel></rss>
