<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dan Rigsby - Coding Up Style</title>
	
	<link>http://www.danrigsby.com/blog</link>
	<description>Developer.Speaker.Blogger</description>
	<lastBuildDate>Tue, 17 Nov 2009 18:29:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DanRigsby" /><feedburner:info uri="danrigsby" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.835369</geo:lat><geo:long>-85.986353</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><item>
		<title>Microsoft PDC 09: Day 1</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/cySQUlZ-unw/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/11/17/microsoft-pdc-09-day-1/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 17:10:40 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[PDC]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/11/17/microsoft-pdc-09-day-1/</guid>
		<description><![CDATA[ Ray Ozzie
Fashion form and function are changing how we look at PCs, gaming devices, and media PCs.&#160; This gives us the ability to look for new innovation on the client.&#160; In particular at how cloud computing can bring all of these devices together. 
For users…     seamless multi-screen experiences
for developers and [...]]]></description>
			<content:encoded><![CDATA[<h2><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/11/PDC09Bling_BeforeAfter_136.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="PDC09Bling_BeforeAfter_136" border="0" alt="PDC09Bling_BeforeAfter_136" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/11/PDC09Bling_BeforeAfter_136_thumb.jpg" width="136" height="186" /></a> Ray Ozzie</h2>
<p>Fashion form and function are changing how we look at PCs, gaming devices, and media PCs.&#160; This gives us the ability to look for new innovation on the client.&#160; In particular at how cloud computing can bring all of these devices together. </p>
<blockquote><p>For users…     <br /><em>seamless multi-screen experiences</em></p>
<p>for developers and IT…     <br /><em>skills leverage and investment leverage</em></p>
</blockquote>
<p>Microsoft is continuing with the “3 screens and a cloud: Mobile, PC, TV” mantra.&#160; All developers need to be thinking about all of these potential devices when developing applications.&#160; Ray promises that “IE will be the best browser for Windows”, but it looks like Silverlight will be more and more key for bridging client on each of these devices.</p>
<p>The first 3rd party demo to show off some of the work in the “3 screens” space was given&#160; <a href="www.seesmic.com">Seesmic</a>.&#160; They announced that their Twitter client for Windows rewritten in Silverlight.&#160; The difference in this application is that it is more of a platform than other twitter clients out there.&#160; There will be an api to write extensions to the client to add new abilities to the client.</p>
<p><strong>Azure Timeline:</strong></p>
<p>October 27th PDC08: Azure is announced   <br />November 17th 2009 PDC09: New Azure announcements and features    <br />Jan 1st 2009: Azure moves into production    <br />February 1st 2009: Azure is open for billing</p>
<p>Some of the new Azure features will include:</p>
<ul>
<li>REST based service management APIs</li>
<li>Multiple sizes of VMs</li>
<li>Now support any kind of windows code including Java, Tomcat, MySql, Apache, Php, etc</li>
<li>Now support for any number of roles</li>
<li>Entity group transactions</li>
<li>Custom blob domain names</li>
<li>XDrive: mountable durable virtual volumes</li>
</ul>
<p><strong>Wordpress Demo:</strong></p>
<p>Automatic, the developer of <a href="www.wordpress.com">Wordpress</a>, will be one of the first OEMs to go public with Azure.&#160; If you didn&#8217;t know, Wordpress is all about php, apache, and MySql.&#160; The thought of having all of this running one Azure a year ago was probably unthinkable.&#160; However, it really shows how serious Microsoft really is about embracing the non-Microsoft world and helping to include them in their vision. </p>
<p>“I can has cheezeburger” and their sister sites like “FailBlog” run on Wordpress and were eager to show off how Azure under Wordpress could help handle their spikes in traffic. Starting today, November 17th, They are launching <a href="http://www.oddlyspecific.com/">OddlySpecific.com</a> which will run on Azure.</p>
<p><strong>Microsoft Pinpoint:</strong></p>
<p>A unificed catagoy of services and businesses to help you grow your business.&#160; This will be integrated into Windows Azure and give developers the ability to leverage services against other items on the web.&#160; This seems a lot like other Marketplace applications out there, but the idea is to bring a community around extending services the use inside of Azure.</p>
<p><strong>Codename “Dallas”:</strong></p>
<p>An open catalog for and marketplace for data.&#160; Its a unified location for accessing all of the data that might be fore sale like customer data, user data, metrics, etc.&#160; These vendors of data exist today, but bringing them under a single marketplace allows users to discover data that they may not have known was available.</p>
<p>The Dallas marketplace seems to be running on DataServices and will give you the ability to download proxies for accessing the data.&#160; The beauty of this is that it might be easy to find free data by doing some simple web searches, but finding the “for pay” data can be hard.&#160; There are many realms of applications that can be built by bridging this data.&#160; I immediately think of “Mashups”, but it will be interesting to see what can be developed and what kind of free data will be out there for developers to play with.</p>
<p><strong>NASA Pathfinder Challenge:</strong></p>
<p>The Pathfinder Challenge being put by the US government, users can work with the Mars data and use it to make interesting applications.&#160; The website is <a title="http://beamartian.jpl.nasa.gov/welcome" href="http://beamartian.jpl.nasa.gov/welcome">http://beamartian.jpl.nasa.gov/welcome</a>.&#160; I like that the government is working towards service delivering instead of building all of the infrastructure themselves.&#160; Seems like a better use of tax payer money.&#160; Let the community do the work for you. NASA doesn&#8217;t always have the best ideas, and its nice to see this data being delivered to the masses.&#160; <a href="http://www.data.gov">www.data.gov</a> will bring even more data over time which will hopefully extend much beyond the Mars data.</p>
<h2>Bob Muglia</h2>
<p>Bing runs across over 100,000 pcs worldwide.&#160; It does this through an infrastructure called “Auto Pilot” which allows a few administrators to manage all of these machines.&#160; This was a great prototype, but wasn&#8217;t something could be easily brought to Windows Server.&#160; However, Azure changes all of this and these techniques can be brought to the masses.</p>
<p>History of the server platform:</p>
<blockquote><p>1970s: Mainframe     <br />1980s: Client / Server      <br />1990s: Web      <br />2000s: SOA      <br />2010s: Cloud</p>
</blockquote>
<p>The Cloud brings us us the “Cloud Application Model” through: multi-tenancy, staged production, elasticity, federation, always available, scale out, service orientation, and model driven design.&#160; </p>
<p>Connectivity in Azure can be done with Data Services, the Service Bus, Access Control Services, and a new low level tool called “Project Sydney” which gives you the ability to connect your existing internal services with services running on SQL Azure through a tool called teh “Project Sydney” Connectivity Agent.</p>
<p>Next year, you will be able to create your own Windows Azure virtual machine images and mount them such that you can access them via remote desktop and control your environment.&#160; Theses virtual machines can then be easily deployed back up to the cloud.</p>
<p>AppFabric was announced which looks to be the official name of “Dublin”.&#160; It will give us caching, workflow hosting, monitoring, service bus, service hosting, access control, etc.&#160; This will run on both Windows Server and Azure.</p>
<p>We knew that “Oslo” would have a couple of name changes at PDC this year.&#160; The “Repository” has been renamed to “SQL Server Modeling Services” and will be a storage mechanism for these models just as the original vision of the “Repository” was working to accomplish.&#160; I will be curious if this includes all of “Oslo” or if at least the DSL tools or other pieces will be made to not be so SQL Server specific.</p>
<p><strong>Demos:</strong></p>
<p>Don Box and Chris Anderson jumped in and gave a demo of some of the Azure changes since PDC08 including SQL Azure, OData, and OAuthWRAP.</p>
<p>Another 3rd Party demo was done by Kelley Blue Book showing off how they are making use of Azure and SQL Azure Data Sync.&#160; At the end of the data, Kelley Blue Book is a data provider.&#160; They have a interesting Silverlight web application today, but getting their data out there in a scalable format will really help them grow.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=cySQUlZ-unw:aBwbxnBoFyI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=cySQUlZ-unw:aBwbxnBoFyI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=cySQUlZ-unw:aBwbxnBoFyI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=cySQUlZ-unw:aBwbxnBoFyI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=cySQUlZ-unw:aBwbxnBoFyI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/cySQUlZ-unw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/11/17/microsoft-pdc-09-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/11/17/microsoft-pdc-09-day-1/</feedburner:origLink></item>
		<item>
		<title>Microsoft PDC 2009: My Tentative Schedule</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/pRoEUkx0V8c/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/11/15/microsoft-pdc-2009-my-tentative-schedule/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 23:36:30 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[PDC]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/11/15/microsoft-pdc-2009-my-tentative-schedule/</guid>
		<description><![CDATA[I am heading out to Microsoft’s PDC this year and thought I would share my tentative schedule.&#160; There are a number of good sessions that I had a hard time choosing.&#160; I hope to see a lot of you there.&#160; It will be a blast!
Monday, Nov. 16th
 

10:15AM: Arrive at LAX
10:00AM-5:45PM Windows 7 Developer Boot [...]]]></description>
			<content:encoded><![CDATA[<p>I am heading out to Microsoft’s PDC this year and thought I would share my tentative schedule.&#160; There are a number of good sessions that I had a hard time choosing.&#160; I hope to see a lot of you there.&#160; It will be a blast!</p>
<p><strong>Monday, Nov. 16th</strong></p>
<p> <strong></strong>
<ul>
<li>10:15AM: <em>Arrive at LAX</em></li>
<li>10:00AM-5:45PM Windows 7 Developer Boot Camp (Petree Hall D)</li>
<li>7:00PM-10:00PM: <em>Party with Palermo (</em><a href="http://pdc09.partywithpalermo.com/)"><em>http://pdc09.partywithpalermo.com/)</em></a></li>
</ul>
<p><strong>Tuesday, Nov. 17th</strong></p>
<p> <strong></strong>
<ul>
<li><em>(Available for Breakfast)</em> </li>
<li>8:30AM-10:30AM: Keynote </li>
<li>11:00AM-12:00PM: Data Programming and Modeling for the Microsoft .NET Developer (403AB)</li>
<li>12:30PM-1:15PM: <em>???</em></li>
<li>1:30PM-2:30PM: Microsoft ASP.Net Futures (Petree Hall D)</li>
<li>3:00PM-4:00PM: Evolving ADO.NET Entity Framework in Microsoft .NET Framework 4 and Beyond (Petree Hall D) </li>
<li>4:15PM-5:00PM: <em>Booth duty at the MS Dev Partner Booth</em></li>
<li>6:30PM-9:00PM: <em>(private) Elevate Lounge </em></li>
<li>6:50PM-8:20PM: <em>(private) Partner Evangelist Focus Group, 2nd Level West Hall, Room 514 </em></li>
</ul>
<p><strong>Wednesday, Nov. 18th</strong></p>
<p> <strong></strong>
<ul>
<li><em>(Available for Breakfast)</em> </li>
<li>8:30AM-11:00AM: <em>Keynote</em></li>
<li>11:30PM-12:30PM: Microsoft Perspectives on the Future of Programming (Petree Hall C)     <br />Microsoft Silverlight Roadmap and Futures (Hall F)      <br />Windows Identity Foundation Overview (403AB)      <br />Developing REST Applications with the .NET Framework (Hall E)      <br />Building Data-Driven Applications Using Microsoft Project Code Name &quot;Quadrant&quot; and Microsoft Project Code Name &quot;M&quot; (408B) </li>
<li>1:00PM-2:20PM: <em>Central Region Meet-up, MS Dev Partner Booth</em></li>
<li>2:00PM-3:00PM: ADO.NET Data Services: What’s New with the RESTful Data Services Framework (515B)</li>
<li>3:15PM-4:15PM: <em>???</em></li>
<li>4:30-5:30PM: REST Services Security Using the Access Control Service (403AB)</li>
<li>7:00PM-9:00PM: <em>GeekFest</em></li>
<li>7:00PM-1:00AM: <em>The Underground @ PDC09 (</em><a href="http://undergroundatpdc.com/"><em>http://undergroundatpdc.com/</em></a>)</li>
</ul>
<p><strong>Thursday, Nov. 19th</strong></p>
<p> <strong></strong>
<ul>
<li><em>(Available for Breakfast)</em> </li>
<li>10:00AM-11:00AM: What’s New for Windows Communication Foundation 4 (Petree Hall D)     <br />A Lap Around Microsoft Visual Studio and Team Foundation Server 2010 (Petree Hall C)      <br />11:30AM-12:30PM: Microsoft Project Code Name “Repository”: Using Metadata to Drive Application Design, Development, and Management (515 B)</li>
<li>12:45PM-1:30PM: <em>???</em></li>
<li>1:45PM-2:45PM: Application Server Extensibility with Microsoft Project Code Name “Dublin” and Microsoft .NET Framework 4 (Petree Hall D)     <br />Scrum in the Enterprise and Process Customization with Microsoft Visual Studio 2010 (408A)</li>
<li>3:00PM-4:00PM: Automating &quot;Done Done&quot; in the Team Workflows with Microsoft Visual Studio Ultimate and Team Foundation Server 2010 (Petree Hall D) </li>
<li><em>I am open the rest of the day for talking, hanging out, etc.&#160; Just let me know!</em></li>
</ul>
<p><strong>Friday, Nov. 20th</strong></p>
<ul>
<li>7:20AM: <em>Flight back to Indianapolis and a couple of enjoyable days digging into the new bits from PDC</em> </li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=pRoEUkx0V8c:hhn0XwDsHI8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=pRoEUkx0V8c:hhn0XwDsHI8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=pRoEUkx0V8c:hhn0XwDsHI8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=pRoEUkx0V8c:hhn0XwDsHI8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=pRoEUkx0V8c:hhn0XwDsHI8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/pRoEUkx0V8c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/11/15/microsoft-pdc-2009-my-tentative-schedule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/11/15/microsoft-pdc-2009-my-tentative-schedule/</feedburner:origLink></item>
		<item>
		<title>New Screencast: Working with Property Grids</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/YwraF83HXcw/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 16:56:23 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/</guid>
		<description><![CDATA[ I have a new 8 min 7 sec training webcast up over working with the PropertyGrid control in Windows Forms applications.
The video is available through JupiterMedia and can be viewed at http://www.internet.com/video/. Just look for the &#34;Developer Video&#34; titled &#34;Working with Property Grids&#34;.
Direct links are:    http://www.internet.com/video/?bcpid=1534611832&#38;bclid=1433966034&#38;bctid=27475045001

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/06/screencast1thumbthumbthumb1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="screencast1thumbthumb-thumb1" border="0" alt="screencast1thumbthumb-thumb1" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/06/screencast1thumbthumbthumb1-thumb.png" width="128" height="128" /></a> I have a new 8 min 7 sec training webcast up over working with the <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.propertygrid.aspx">PropertyGrid</a> control in Windows Forms applications.</p>
<p>The video is available through <a href="http://www.jupitermedia.com">JupiterMedia</a> and can be viewed at <a href="http://www.internet.com/video/">http://www.internet.com/video/</a>. Just look for the &quot;Developer Video&quot; titled &quot;Working with Property Grids&quot;.</p>
<p>Direct links are:    <br /><a title="http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=27475045001" href="http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=27475045001">http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=27475045001</a></p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=YwraF83HXcw:O6v9T77Ur6o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=YwraF83HXcw:O6v9T77Ur6o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=YwraF83HXcw:O6v9T77Ur6o:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=YwraF83HXcw:O6v9T77Ur6o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=YwraF83HXcw:O6v9T77Ur6o:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/YwraF83HXcw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/06/29/new-screencast-working-with-property-grids/</feedburner:origLink></item>
		<item>
		<title>Oslo May 2009 CTP: Intellipad Changes</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/li-yVQcIDSw/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/#comments</comments>
		<pubDate>Wed, 27 May 2009 18:47:40 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/</guid>
		<description><![CDATA[The May 2009 CTP of “Oslo” introduces a lot of new features and enhancements to the existing toolset.&#160; As a developer, my primary “Oslo” tool has been Intellipad.&#160; It does seem much faster and more stable after a little over an hour of use.&#160; Previous CTPs were memory hogs and would occasionally crash.&#160; I will [...]]]></description>
			<content:encoded><![CDATA[<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/oslo5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="oslo_thumb3" border="0" alt="oslo_thumb3" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/oslo-thumb3.png" width="121" height="100" /></a>The <a href="http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/">May 2009 CTP of “Oslo”</a> introduces a lot of new features and enhancements to the existing toolset.&#160; As a developer, my primary “Oslo” tool has been Intellipad.&#160; It does seem much faster and more stable after a little over an hour of use.&#160; Previous CTPs were memory hogs and would occasionally crash.&#160; I will be upgrading all of my demos and work projects over to the latest CTP over the next week, so I will get to see how much more stable it really is.&#160; Here is an overview of some of the UI Change:</p>
<h2>Shell</h2>
<p>For the most part we have the same familiar interface.&#160; You have the same basic layout shell which is a mixture of a standard application frame and menu bar in one.&#160; Everything else in Intellipad is a workspace window which can be docked any number of ways inside this shell.&#160; The shell itself has a couple of new features:</p>
<ol>
<li>A new icon&#160; (same icon used by Quadrant) </li>
<li>The build number is now displayed next to the control box </li>
<li>Menu items now appear to use much less white space, display proper “…” labels on items that open new windows, and a few other UI adjustments </li>
</ol>
<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image27.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb11" border="0" alt="image_thumb11" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb111.png" width="694" height="478" /></a></p>
<h2>Workspace Window</h2>
<p>Each workspace window has its own title bar as always.&#160; The title bar appears to be the same.&#160; We still have the document name, zoom level, a drop down to change “Modes” and a close button.&#160; However, now the the active workspace window is highlighted in “Oslo Green”.&#160; This is a minor change, but really comes in hand when working with multiple documents. </p>
<p>The “Edit” menu item for windows has a number of new features.&#160; Check out the list of commands:</p>
<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image34.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb14" border="0" alt="image_thumb14" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb141.png" width="446" height="392" /></a> </p>
<p>We have our standard Undo/Redo/Cut/Copy/Paste/Delete/Find/Replace/GotoLine options which we had before, but now we have:</p>
<ol>
<li>Disable External Changes:Behaviors
<ol>
<li>Selection Highlight: This is really neat! With this option as you select text in the document, it will be highlighted in “Oslo Green” and other uses of that same text in the same document will also be highlighted in blue. </li>
<li>Error Squiggles: Whether or not to show the red squiggle under errors.&#160; if you turn this off, you will still see errors in the error window, but you will have no visual indicator on the document, nor will you have the error tooltips </li>
<li>Column Indicator: </li>
<li>Link Navigation: </li>
<li>Work Wrap: Wraps the text at the end of the line </li>
<li>Line Numbers: Provides line numbers to the left of the document </li>
</ol>
</li>
</ol>
<p><em>This screenshot shows the “error squiggle” and “selection highlighting” in action:      <br /></em><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image38.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb16" border="0" alt="image_thumb16" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb161.png" width="487" height="470" /></a>&#160;</p>
<p>There is new a View menu item which generously gives us support for quickly launching the three most important developer windows: Minibuffer, Errors, and Notifications.    <br /><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image58.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb26" border="0" alt="image_thumb26" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb26.png" width="422" height="185" /></a> </p>
<p>There is also a new Help menu item for displaying an “Intellipad Primer” document in Rich Text mode:<a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image57.png">      <br /><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb25" border="0" alt="image_thumb25" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb25.png" width="487" height="470" /></a> </p>
<h2>Mini-Buffer</h2>
<p>The mini buffer has change dramatically.&#160; It use to pop up a kind of modal WPF dialog which allowed you to enter in commands.&#160; This would occasionally cause Intellipad to crash on me.&#160; In May CTP, it is now a standard document window where you can enter in commands and see previous commands much like if it were a command line window.</p>
<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image42.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb18" border="0" alt="image_thumb18" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb18.png" width="693" height="130" /></a> </p>
<p>Some people may dislike this little change, but personally I like this change as it is more consistent with the rest of the UI and user friendly.</p>
<h2>DSL Authoring Mode</h2>
</p>
</p>
<p>The “DSL Authoring Mode” is a 3-Windows view inside of Intellipad which contains:</p>
<ol>
<li>The document containing the DSL </li>
<li>The input: some document were you could enter in data to test against the DSL </li>
<li>The output: The AST tree that was generated from the input via the DSL </li>
</ol>
<p>This mode is the preferred way to write a DSL as you can see how changes affect the schema in real time.</p>
<p>In previous CTPs you had to launch a Intellipad with special command line options to be able to work in what was known as “DSL Authoring Mode”.&#160; This usually meant selecting “Intellipad (Samples Enabled)” from the start menu instead of just “Intellipad”.&#160; This was annoying at best.&#160; In the May CTP however, you can now enter “DSL Authoring Mode” from the standard launch of Intellipad.&#160; Just open a document in “DSL Grammar Mode”, and there is a new DSL menu item called “Split New Input and Output Views” which launches the 3-Window view.</p>
<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image49.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb21" border="0" alt="image_thumb21" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb21.png" width="693" height="184" /></a> </p>
<p><a href="file:///C:/Users/DanRigsby/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles22ACBB1A/image50.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_thumb22" border="0" alt="image_thumb22" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb22.png" width="694" height="478" /></a></p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=li-yVQcIDSw:XniztOxe25g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=li-yVQcIDSw:XniztOxe25g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=li-yVQcIDSw:XniztOxe25g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=li-yVQcIDSw:XniztOxe25g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=li-yVQcIDSw:XniztOxe25g:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/li-yVQcIDSw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-intellipad-changes/</feedburner:origLink></item>
		<item>
		<title>Oslo May 2009 CTP: Released</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/odsimS2i6Rg/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/#comments</comments>
		<pubDate>Wed, 27 May 2009 16:49:00 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/</guid>
		<description><![CDATA[ It’s been many long months since the last drop of Oslo (January 2009).&#160; Last night, Chris Sells and others announced the May 2009 CTP of Oslo (version 0.4.2).&#160; Each new CTP brings more features, more documentation, and more stability.&#160; The May CTP holds true with many new features including:

The first public release of Quadrant
Major [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/oslo.png"><img title="oslo" border="0" alt="oslo" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/oslo-thumb.png" width="121" height="100" /></a> It’s been many long months since the last drop of <a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">Oslo</a> (January 2009).&#160; Last night, Chris Sells and others announced the <a href="http://blogs.msdn.com/modelcitizen/archive/2009/05/27/about-the-oslo-may-2009-ctp.aspx">May 2009 CTP of Oslo</a> (version 0.4.2).&#160; Each new CTP brings more features, more documentation, and more stability.&#160; The May CTP holds true with many new features including:</p>
<ol>
<li>The first public release of <a href="http://msdn.microsoft.com/en-us/library/dd857506(VS.85).aspx">Quadrant</a></li>
<li>Major updates to Intellipad (including a built in authoring mode) </li>
<li>A unified tool set for all “M” languages </li>
<li>A new installer (themed like Intellipad and Quadrant) </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd857485(VS.85).aspx">UML Domain</a> support (Use Case, Activity, Class, Sequence, Component diagrams, etc) and a loader to import UML diagrams in XMI format into the repository </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd857487(VS.85).aspx">CLR Domain</a> support and a loader to import .NET assemblies into the repository </li>
</ol>
<p>I was told that we would have support for most of the command line tools in Intellipad for this release such as being able to compile and deploy to the repository. However, after having played with Intellipad for 30 minutes this morning, I can’t find any of these commands.&#160; They should be some simple customizations via python scripts and modifying some xml files.&#160; Hopefully the team will release these additions as well.</p>
<p>Download the CTP here: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=827122a5-3ca0-4389-a79e-87af37cbf60d&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=827122a5-3ca0-4389-a79e-87af37cbf60d&amp;displaylang=en</a></p>
<h4></h4>
<h4></h4>
<h4>Install Experience</h4>
<p>The install experience has been greatly improved. (Be sure to install any previous versions first) Here are some screenshots:</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image3.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb3.png" width="244" height="181" /></a></td>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image4.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb4.png" width="244" height="181" /></a></td>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image5.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb5.png" width="244" height="181" /></a></td>
</tr>
<tr>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image6.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb6.png" width="244" height="181" /></a></td>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image7.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb7.png" width="244" height="181" /></a></td>
<td valign="top" width="133"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image8.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb8.png" width="244" height="181" /></a></td>
</tr>
<tr>
<td valign="top" width="133">
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image9.png"><img title="image" border="0" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb9.png" width="244" height="181" /></a></p>
</td>
<td valign="top" width="133">&#160;</td>
<td valign="top" width="133">&#160;</td>
</tr>
</tbody>
</table>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=odsimS2i6Rg:ovZtgXQaVPg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=odsimS2i6Rg:ovZtgXQaVPg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=odsimS2i6Rg:ovZtgXQaVPg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=odsimS2i6Rg:ovZtgXQaVPg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=odsimS2i6Rg:ovZtgXQaVPg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/odsimS2i6Rg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/27/oslo-may-2009-ctp-released/</feedburner:origLink></item>
		<item>
		<title>Visual Studio 2010: Extension Manager</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/SiBHmAbqo7g/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/#comments</comments>
		<pubDate>Thu, 21 May 2009 23:51:53 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/</guid>
		<description><![CDATA[Since PDC 2008 we have been hearing about the Managed Extensibility Framework (MEF) support in Visual Studio 2010.&#160; Now that the Beta has been released, we can start to see how it is coming together.&#160; To access the MEF extensions, just open the Extension Manager from the menu bar: Tools –&#62; Extension Manager.
 
It appears [...]]]></description>
			<content:encoded><![CDATA[<p>Since PDC 2008 we have been hearing about the <a href="http://www.codeplex.com/MEF">Managed Extensibility Framework</a> (MEF) support in Visual Studio 2010.&#160; Now that the Beta has been released, we can start to see how it is coming together.&#160; To access the MEF extensions, just open the Extension Manager from the menu bar: Tools –&gt; Extension Manager.</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/521200911549pm1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="5-21-2009 1-15-49 PM" border="0" alt="5-21-2009 1-15-49 PM" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/521200911549pm-thumb.png" width="644" height="446" /></a> </p>
<p>It appears that we will have a host of categories for different types extensions.&#160; You can choose from “Installed Extensions” or browse the “Online Gallery”. The major categories are:</p>
<ol>
<li>Controls
<ol>
<li>ASP.Net Controls </li>
<li>Framework &amp; Libraries </li>
<li>Sharepoint Controls </li>
<li>Silverlight Controls </li>
<li>Windows Forms Controls </li>
<li>WPF Controls </li>
</ol>
</li>
<li>Templates
<ol>
<li>Windows Forms </li>
<li>WPF </li>
</ol>
</li>
<li>Tools
<ol>
<li>Build </li>
<li>Coding </li>
<li>Data </li>
<li>Documentation </li>
<li>Modeling </li>
<li>Other </li>
<li>Performance </li>
<li>Programming &amp; Languages </li>
<li>Reporting </li>
<li>Setup &amp; Deployment </li>
<li>Source Control </li>
<li>Team Development </li>
<li>Testing </li>
<li>Web </li>
</ol>
</li>
</ol>
<p>Currently there are only 12 extensions available, and none appear to be new UI controls. Some of them are pretty interesting, but I am excited about what this could lead to. You seem to be able to extend quite a few areas of Visual Studio now!</p>
<p>Some of the more interesting existing extensions are:</p>
<table border="0" cellspacing="0" cellpadding="2" width="706">
<tbody>
<tr>
<td valign="top" width="394"><strong>Intellisense Presenter</strong>           <br />A new way to view your intellisense in a WPF fashion.</td>
<td valign="top" width="310"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image.png"><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://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb.png" width="244" height="81" /></a> </td>
</tr>
<tr>
<td valign="top" width="394"><strong>RegEx Editor</strong>           <br />Regular expression syntax highlighting, intellisense, in place testing, and more right from your code.</td>
<td valign="top" width="310"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image1.png"><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://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb1.png" width="200" height="200" /></a></td>
</tr>
<tr>
<td valign="top" width="394"><strong>Image Insertion            <br /></strong>This allows you to insert images into code files.&#160; Great for adding developer documentation, but not sure what else it would be useful for.</td>
<td valign="top" width="310"><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/image2.png"><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://www.danrigsby.com/blog/wp-content/uploads/2009/05/image-thumb2.png" width="201" height="200" /></a></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>I haven&#8217;t been able to find the WPF xml document visualizer that they showed off at PDC 2008. Hopefully this will show up in the gallery soon along with other useful nuggets.</p>
<p>I wonder if this will turn into a platform for pushing out new controls to use in our applications in between releases.&#160; It was disappointing to not find any new controls in the toolbox when working with WinForms or WPF.&#160; It is also unclear about how a developer can submit new extensions that be browsed through the gallery.</p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SiBHmAbqo7g:vV2KholbWXA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SiBHmAbqo7g:vV2KholbWXA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SiBHmAbqo7g:vV2KholbWXA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SiBHmAbqo7g:vV2KholbWXA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SiBHmAbqo7g:vV2KholbWXA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/SiBHmAbqo7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/21/visual-studio-2010-extension-manager/</feedburner:origLink></item>
		<item>
		<title>Entity Framework 4.0: Scalar and Void Functions</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/SmpQW5Hj8bo/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/#comments</comments>
		<pubDate>Wed, 20 May 2009 22:52:10 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/</guid>
		<description><![CDATA[One feature that was sorely missing in the first version of Entity Framework was the automated ability to work with stored procedures that didn’t return back entities.&#160; This could have been sprocs that returned void, a scalar value, or some other custom construct.&#160; 
Entity Framework v1
In Entity Framework v1 you could create a “Function Import” [...]]]></description>
			<content:encoded><![CDATA[<p>One feature that was sorely missing in the first version of Entity Framework was the automated ability to work with stored procedures that didn’t return back entities.&#160; This could have been sprocs that returned void, a scalar value, or some other custom construct.&#160; </p>
<h2>Entity Framework v1</h2>
<p>In Entity Framework v1 you could create a “Function Import” from these stored procedures types, but there would be no generated code that would give you access to them directly in the ObjectContext object.&#160; You could only access them via pure <a href="http://msdn.microsoft.com/en-us/library/bb387145.aspx">Entity SQL</a>. </p>
<p>To add a “Function Import” you would just add the sproc to your entity model as your normally would, then right-click on the “Function Imports” in the “Model Browser”, and select “Add Function Import…”.&#160; This would bring up the following screen which would allow you to add your function.</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/5202009103234am.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="5-20-2009 10-32-34 AM" border="0" alt="5-20-2009 10-32-34 AM" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/5202009103234am-thumb.png" width="403" height="295" /></a> </p>
<p>If you selected that the function returned an Entity, then you would be able to access that entity in the ObjectContext. However, if you selected scalar or void, then you would have to manually write some kind of Entity SQL.&#160; It would be nice if these “Function Imports” appeared as operations in the ObjectContext as well.</p>
<h2>Entity Framework 4.0 Solution</h2>
<p>Microsoft finally completed the story for “Function Imports” in Entity Framework 4.0. As you can see in the image below, the “Add Function Import” dialog is virtually the same except for the new option to return a complex type.</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/520200954225pm.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="5-20-2009 5-42-25 PM" border="0" alt="5-20-2009 5-42-25 PM" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/520200954225pm-thumb.png" width="467" height="364" /></a> </p>
<p>You can select the None and Scalar return types as you could before.&#160; However, when the “Function Import” is created, some new code is injected into the Model code behind file that materializes the stored procedure into an operation on the ObjectContext itself:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">public</span> ObjectResult&lt;Nullable&lt;global::System.Int32&gt;&gt; GetProductCountByCategoryId(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    Nullable&lt;global::System.Int32&gt; categoryID)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    ObjectParameter categoryIDParameter;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">if</span> (categoryID.HasValue)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        categoryIDParameter = <span style="color: #0000ff">new</span> ObjectParameter(<span style="color: #006080">&quot;CategoryID&quot;</span>, categoryID);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        categoryIDParameter = <span style="color: #0000ff">new</span> ObjectParameter(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #006080">&quot;CategoryID&quot;</span>, </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">typeof</span>(global::System.Int32));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">return</span> <span style="color: #0000ff">base</span>.ExecuteFunction&lt;Nullable&lt;global::System.Int32&gt;&gt;(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #006080">&quot;GetProductCountByCategoryId&quot;</span>, </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        categoryIDParameter);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<p><!--CRLF--></div>
</div>
<p>A couple of nice things about this are:</p>
<ol>
<li>No matter what we select as the return type, it wraps it as a Nullable type since a database value can always be null </li>
<li>The results are wrapped in an ObjectResult which makes it consistent with all other queries. </li>
</ol>
<p>And as we expect, we can directly access these operations in our code:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">using</span> (var context = <span style="color: #0000ff">new</span> NorthwindEntities())</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    ObjectResult&lt;<span style="color: #0000ff">int</span>?&gt; result =</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        context.GetProductCountByCategoryId(1);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    MessageBox.Show(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        result.FirstOrDefault().Value.ToString());</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<p><!--CRLF--></div>
</div>
<h2>New “Execute” operations</h2>
<p>If you look at the last line of the code generated by “Add Function Import”, you might notice is making a call to a new method called ExecuteFunction&lt;T&gt;.&#160; This method isn’t marked public, but there are two new methods on ObjectContext that we can use to execute functions:</p>
<ol>
<li><strong>int ExecuteStoreCommand</strong>
<p>This method seems to work like “ExecuteCommand” and returns in int representing the result </li>
<li><strong>T ExecuteStoreQuery&lt;T&gt;<br />
      <br /></strong>This appears to be more of a combination of “ExecuteScalar”, “ExecuteNonQuery”, and “ExecuteReader”. </li>
</ol>
<p>These methods give us the ability to run any imported stored procedure in a variety of ways.&#160; Most users, will want to just stick with the generated operations, but its always good to have options!</p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SmpQW5Hj8bo:i8TkMijw8SE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SmpQW5Hj8bo:i8TkMijw8SE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SmpQW5Hj8bo:i8TkMijw8SE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SmpQW5Hj8bo:i8TkMijw8SE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SmpQW5Hj8bo:i8TkMijw8SE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/SmpQW5Hj8bo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/20/entity-framework-40-scalar-and-void-functions/</feedburner:origLink></item>
		<item>
		<title>New Screencast: Custom Sprocs in Entity Framework</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/O2jhKQvpDvg/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/#comments</comments>
		<pubDate>Wed, 20 May 2009 14:11:00 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/</guid>
		<description><![CDATA[ I have a new 8 min 35sec training webcast up over using custom stored procedures in Entity Framework.&#160; This video introduces how to use custom sprocs in your Entity Framework model for inserts, updates, deletes, and custom sprocs for searching.&#160; The video briefly talks about how to work with void and scalar sprocs, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/screencast1thumbthumb1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="screencast1thumb-thumb" border="0" alt="screencast1thumb-thumb" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/screencast1thumbthumb-thumb1.png" width="128" height="128" /></a> I have a new 8 min 35sec training webcast up over using custom stored procedures in Entity Framework.&#160; This video introduces how to use custom sprocs in your Entity Framework model for inserts, updates, deletes, and custom sprocs for searching.&#160; The video briefly talks about how to work with void and scalar sprocs, but doesn’t get far into these as this is a feature that is getting more attention in the next version of Entity Framework.</p>
<p>The video is available through <a href="http://www.jupitermedia.com">JupiterMedia</a> and can be viewed at <a href="http://www.internet.com/video/">http://www.internet.com/video/</a>. Just look for the &quot;Developer Video&quot; titled &quot;Custom Sprocs in Entity Framework&quot;.</p>
<p>Direct links are:    <br /><a title="http://www.internet.com/player/index.php?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=22915014001" href="http://www.internet.com/player/index.php?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=22915014001">http://www.internet.com/player/index.php?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=22915014001</a></p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=O2jhKQvpDvg:hU4cf_VhGzo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=O2jhKQvpDvg:hU4cf_VhGzo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=O2jhKQvpDvg:hU4cf_VhGzo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=O2jhKQvpDvg:hU4cf_VhGzo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=O2jhKQvpDvg:hU4cf_VhGzo:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/O2jhKQvpDvg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/20/new-screencast-custom-sprocs-in-entity-framework/</feedburner:origLink></item>
		<item>
		<title>New Webcast: ADO.Net Data Services</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/SipQt2H-sfc/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/#comments</comments>
		<pubDate>Wed, 20 May 2009 01:19:23 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/</guid>
		<description><![CDATA[I have a new 7 min 55 sec training webcast up over developing ADO.Net DataServices.&#160; This video demonstrates how to create and consume&#160; a simple ADO.Net Data service.
The video is available through JupiterMedia and can be viewed at http://www.internet.com/video/. Just look for the &#34;Developer Video&#34; titled &#34;ADO.Net Data Services&#34;.
Direct links are:    http://www.internet.com/video/?bcpid=1534611832&#38;bclid=1433966034&#38;bctid=13662214001

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/screencast1thumbthumb.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="screencast1thumb-thumb" border="0" alt="screencast1thumb-thumb" align="right" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/screencast1thumbthumb-thumb.png" width="128" height="128" /></a>I have a new 7 min 55 sec training webcast up over developing ADO.Net DataServices.&#160; This video demonstrates how to create and consume&#160; a simple ADO.Net Data service.</p>
<p>The video is available through <a href="http://www.jupitermedia.com">JupiterMedia</a> and can be viewed at <a href="http://www.internet.com/video/">http://www.internet.com/video/</a>. Just look for the &quot;Developer Video&quot; titled &quot;ADO.Net Data Services&quot;.</p>
<p>Direct links are:    <br /><a title="http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=13662214001" href="http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=13662214001">http://www.internet.com/video/?bcpid=1534611832&amp;bclid=1433966034&amp;bctid=13662214001</a></p>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SipQt2H-sfc:5pj4PCPru58:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SipQt2H-sfc:5pj4PCPru58:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SipQt2H-sfc:5pj4PCPru58:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=SipQt2H-sfc:5pj4PCPru58:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=SipQt2H-sfc:5pj4PCPru58:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/SipQt2H-sfc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/19/new-webcast-adonet-data-services/</feedburner:origLink></item>
		<item>
		<title>Entity Framework 4.0: Pluralization</title>
		<link>http://feedproxy.google.com/~r/DanRigsby/~3/Bbf_E-ChG0Q/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/#comments</comments>
		<pubDate>Wed, 20 May 2009 01:00:15 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/</guid>
		<description><![CDATA[One of the new features in Entity Framework 4.0 (EF v2) is a service call “Pluralization”.&#160; This service is used to convert names of objects form singular and/or plural forms.&#160; For instance, if you have a table in the database that has a plural name such as “Customers”, then Entity Framework will automatically generate both [...]]]></description>
			<content:encoded><![CDATA[<div id="codeSnippetWrapper">One of the new features in Entity Framework 4.0 (EF v2) is a service call “Pluralization”.&#160; This service is used to convert names of objects form singular and/or plural forms.&#160; For instance, if you have a table in the database that has a plural name such as “Customers”, then Entity Framework will automatically generate both object Name and Entity Set Name to “Customers” as well.&#160; The result is that in your code, the name will look like this:</div>
<div>&#160;</div>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<div id="codeSnippet" class="csharpcode">
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">Customers c = <span style="color: #0000ff">new</span> Customers();</pre>
</p></div>
<p><!--CRLF--></div>
</p></div>
</p>
<p>Ideally, it would have been nice for EF to see that the table was a plural name and set the object Name to a singular form.</p>
<p>Now, you may be thinking that this is pretty trivial since you can manually change the generated name, but when when you have dozens or hundreds of tables this can be tedious at best.</p>
<p>To use the PluralizationService when generating an Entity Framework model, you just select the option&quot;Pluralize or singularize generated object names”:<br />
    <br /><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization" border="0" alt="Pluralization" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization-thumb.png" width="419" height="538" /></a></p>
<p>Or if you are using the EDMGen.exe tool, you can opt in using the <strong>/pluralize</strong> option.</p>
<h3>Example</h3>
<p>In the Northwind database, all the tables have plural names. (Note: It is typically recommended to name your tables in the singular form).</p>
</div>
<p>&#160;<a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization3" border="0" alt="Pluralization3" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization3-thumb.png" width="213" height="239" /></a></p>
<p>When this database is generated using the PluralizationService, the names are set correctly.</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization1" border="0" alt="Pluralization1" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization1-thumb.png" width="615" height="457" /></a> <a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization2" border="0" alt="Pluralization2" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization2-thumb.png" width="615" height="455" /></a>&#160; </p>
<h2>Manually using the PluralizationService</h2>
<p>The PluralizationService is in the System.Data.Entity.Design.dll under the System.Data.Entity.Design.PluralizationServices namespace. </p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization4" border="0" alt="Pluralization4" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization4-thumb.png" width="668" height="151" /></a> </p>
<p>It is an abstract class and hence, can’t be directly instantiated.&#160; However, there is a static CreateService method on the class to access instances of the service for various cultures.&#160; At this time, the only culture implemented is “en-us”.</p>
<p>It would have been very nice if this were implemented at a more core level of .Net since this could potentially be useful for a lot more than just for Entity Framework design.&#160; Here are some examples using the service:</p>
<div id="codeSnippetWrapper" class="csharpcode-wrapper">
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Create an instance of the service for</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// a particular culture (only 'en-us' atm)</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">PluralizationService ps =</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    PluralizationService.CreateService(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         CultureInfo.GetCultureInfo(<span style="color: #006080">&quot;en-us&quot;</span>));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Convert strings to plural or singular</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">string</span> pluralName = ps.Pluralize(<span style="color: #006080">&quot;Goose&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">string</span> singularName = ps.Singularize(<span style="color: #006080">&quot;Territories&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Note: Correctly returns Geese and Territory</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Check if strings are plural or singular</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">bool</span> isPluralName = ps.IsPlural(<span style="color: #006080">&quot;Sheep&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">bool</span> isSingularName = ps.IsSingular(<span style="color: #006080">&quot;Sheep&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">// Note: Correctly sees both of these <span style="color: #0000ff">as</span> true</pre>
<p><!--CRLF--></div>
</p></div>
</div>
<p><a title="http://blogs.msdn.com/efdesign/archive/2008/12/02/pluralization.aspx" href="http://blogs.msdn.com/efdesign/archive/2008/12/02/pluralization.aspx"></a></p>
</p>
</p>
</p>
<h2>Adding your own pluralization mapping</h2>
<p>There is an interface using by the PluralizationService called ICustomPluralizationMapping that isn’t publicly exposed.&#160; However, since it is implemented, you can cast the service to this interface and make use of the AddWord method to add your own mapping.<a href="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Pluralization5" border="0" alt="Pluralization5" src="http://www.danrigsby.com/blog/wp-content/uploads/2009/05/pluralization5-thumb.png" width="539" height="147" /></a> </p>
<p>In this example, we add a new word called “Foo” with the plural version being “Foos”:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Create an instance of the service for</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// a particular culture (only 'en-us' atm)</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">PluralizationService ps =</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    PluralizationService.CreateService(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        CultureInfo.GetCultureInfo(<span style="color: #006080">&quot;en-us&quot;</span>));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Cast to the mapping interface</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">ICustomPluralizationMapping mapping =</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    ps <span style="color: #0000ff">as</span> ICustomPluralizationMapping;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">// Add a new word mapping</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">mapping.AddWord(<span style="color: #006080">&quot;Foo&quot;</span>, <span style="color: #006080">&quot;Foos&quot;</span>);</pre>
<p><!--CRLF--></div>
</div>
<div>You could then use the service to generate the metadata or use it in some other context:</div>
<div id="codeSnippetWrapper">
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">EntityModelSchemaGenerator generator =</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">new</span> EntityModelSchemaGenerator(</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        entityContainer,</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        ps);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">var edm = generator.GenerateMetadata(); </pre>
<p><!--CRLF--></div>
</p></div>
</div>
<div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"><a href="http://www.dotnetkicks.com/kick/?url=http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/&amp;bgcolor=0080C0&amp;fgcolor=FFFFFF&amp;border=000000&amp;cbgcolor=D4E1ED&amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/"></a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=Bbf_E-ChG0Q:OP8UhqKXzFo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:Chn0KnnqYy0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=Chn0KnnqYy0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=Bbf_E-ChG0Q:OP8UhqKXzFo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=Bbf_E-ChG0Q:OP8UhqKXzFo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/DanRigsby?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DanRigsby?a=Bbf_E-ChG0Q:OP8UhqKXzFo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DanRigsby?i=Bbf_E-ChG0Q:OP8UhqKXzFo:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DanRigsby/~4/Bbf_E-ChG0Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.danrigsby.com/blog/index.php/2009/05/19/entity-framework-40-pluralization/</feedburner:origLink></item>
	</channel>
</rss>
