<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Man vs Code</title><link>http://blogs.msdn.com/b/aconrad/</link><description>invaluable minutiae</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Oh yah–new windows phone 7 release for WCF Data Services also!</title><link>http://blogs.msdn.com/b/aconrad/archive/2010/10/28/oh-yah-new-windows-phone-7-release-for-wcf-data-services-also.aspx</link><pubDate>Thu, 28 Oct 2010 20:36:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10082409</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=10082409</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2010/10/28/oh-yah-new-windows-phone-7-release-for-wcf-data-services-also.aspx#comments</comments><description>&lt;p&gt;Let the releases roll!&lt;/p&gt;  &lt;p&gt;New WCF Data Service &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2010/10/28/data-services-client-for-win-phone-7-now-available.aspx" target="_blank"&gt;client&lt;/a&gt; for Windows Phone 7.&lt;/p&gt;  &lt;p&gt;This is an update to the WCF Data Service client that we shipped with .net 4.0 with a few phone specific features added in (e.g. tomb stoning).&lt;/p&gt;  &lt;p&gt;Since it is an RTM release, you can use it for Windows Phone 7 apps submitted to the Windows Phone Marketplace.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10082409" width="1" height="1"&gt;</description></item><item><title>New WCF Data Services CTP now available!</title><link>http://blogs.msdn.com/b/aconrad/archive/2010/10/28/new-wcf-data-services-ctp-now-available.aspx</link><pubDate>Thu, 28 Oct 2010 19:56:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10082375</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=10082375</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2010/10/28/new-wcf-data-services-ctp-now-available.aspx#comments</comments><description>&lt;p&gt;As of yesterday, we have a new CTP available for WCF Data Services &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2010/10/26/announcing-wcf-data-services-oct-2010-ctp1-for-net4-amp-sl4.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; This release includes a number of new OData and WCF Data Service features designed to make producing and consuming consumer data services easier.&lt;/p&gt;  &lt;p&gt;Ahmed Moustafa has a nice &lt;a href="http://blogs.msdn.com/b/astoriateam/archive/2010/10/26/walkthrough-odata-client-for-windows-live-services.aspx" target="_blank"&gt;post&lt;/a&gt; about the new features.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10082375" width="1" height="1"&gt;</description></item><item><title>Project Astoria == ADO.NET Data Services == WCF Data Services</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/11/18/project-astoria-ado-net-data-services-wcf-data-services.aspx</link><pubDate>Thu, 19 Nov 2009 02:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9925022</guid><dc:creator>aconrad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9925022</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/11/18/project-astoria-ado-net-data-services-wcf-data-services.aspx#comments</comments><description>&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;As announced at &lt;A href="http://microsoftpdc.com/Sessions/FT12" mce_href="http://microsoftpdc.com/Sessions/FT12"&gt;PDC this afternoon by Pablo&lt;/A&gt;, the ADO.NET Data Services framework is being renamed WCF Data Services as the first part of a long term effort to align all the Microsoft technologies for building n-tier applications and services.&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;While this change does not affect current product plans or deliverables for Dev 10 or Silverlight, it is the first&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN" lang=EN&gt;&lt;FONT size=3&gt;&amp;nbsp;key step in simplifying our offerings in this space.&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925022" width="1" height="1"&gt;</description></item><item><title>ODBC for the web</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/11/18/odbc-for-the-web.aspx</link><pubDate>Wed, 18 Nov 2009 20:34:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924672</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9924672</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/11/18/odbc-for-the-web.aspx#comments</comments><description>&lt;p&gt;Yesterday at PDC and via the &lt;a href="http://blogs.msdn.com/astoriateam/"&gt;Project Astoria team blog&lt;/a&gt;, we announced the &lt;a href="http://odata.org"&gt;Open Data Protocol (OData) imitative&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The Open Data Protocol (OData) specification is published under the &lt;a href="http://www.microsoft.com/interop/osp/default.mspx"&gt;Open Specification Promise&lt;/a&gt; which allows anyone to develop software that interops with OData sources. In fact, there is already a growing list of products and libraries in addition to ADO.NET Data Services supporting OData, i.e. Sharepoint Server 2010, Excel 2010, Windows Azure, PHP, Java Restlet, and Silverlight.&lt;/p&gt;  &lt;p&gt;In truth, this is simply a formal naming of the extensions to ATOM we have been supporting for two years now via ADO.NET Data Services. In other words, this will not affect any of our current product plans or releases. However doing this now is very intentional and is part of our overall goal of enabling data access across disparate data sources commonly found on the web and within enterprises – ODBC for the web!&lt;/p&gt;  &lt;p&gt;For more information, please check out the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/astoriateam/archive/2009/11/17/breaking-down-data-silos-the-open-data-protocol-odata.aspx"&gt;Official announcement on team blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/ee844254.aspx"&gt;Open Data Protocol Q &amp;amp; A&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://odata.org"&gt;http://odata.org&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924672" width="1" height="1"&gt;</description></item><item><title>DevConnections slides and demo</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/11/17/devconnections-slides-and-demo.aspx</link><pubDate>Tue, 17 Nov 2009 22:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923906</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9923906</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/11/17/devconnections-slides-and-demo.aspx#comments</comments><description>&lt;P&gt;Here is my slides and demo from the talk I gave last week at DevConnections: “&lt;B&gt;DAO01: What’s New in ADO.NET Data Services?&lt;/B&gt;”.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923906" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-92-39-06/What_2700_s-new-in-ADO.NET-Data-Services.zip" length="1730441" type="application/x-zip-compressed" /></item><item><title>Peter Qian and row count</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/peter-qian-and-row-count.aspx</link><pubDate>Wed, 18 Mar 2009 07:51:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9485871</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9485871</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/peter-qian-and-row-count.aspx#comments</comments><description>&lt;p&gt;Peter Qian, the newest member of the ADO.NET Data Services, now has his own &lt;a href="http://blogs.msdn.com/peter_qian"&gt;blog&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In his initial &lt;a href="http://blogs.msdn.com/peter_qian/archive/2009/03/18/getting-row-count-in-ado-net-data-services.aspx"&gt;post&lt;/a&gt;, Peter talks about the row count feature we included with v1.5 of ADO.NET Data Services.&amp;#160; He was one of the main designers and the implementer of this feature, so he knows what he is talking about.&amp;#160; What he doesn't know about quite yet is what happens when the community finds he owns the #1 customer ask for ADO.NET Data Services and he now has a blog.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9485871" width="1" height="1"&gt;</description></item><item><title>updated Linq to Sql IUpdatable implementation</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/updated-linq-to-sql-iupdatable-implementation.aspx</link><pubDate>Wed, 18 Mar 2009 02:52:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9485207</guid><dc:creator>aconrad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9485207</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/updated-linq-to-sql-iupdatable-implementation.aspx#comments</comments><description>&lt;p&gt;Based on feedback from &lt;a href="http://www.robfe.com/"&gt;Robert Fonseca-Ensor&lt;/a&gt;, I have made a bunch of bug and performance fixes to the IUpdatable implementation for Linq to Sql and posted those to &lt;a href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;code gallery&lt;/a&gt;.&amp;#160; Rob is also now my first official contributor to the project.&lt;/p&gt;  &lt;p&gt;As part of ADO.NET Data Services v1.5 we have provided a new way to plug in data sources that provides the following features sorely missing from v1:&lt;/p&gt;  &lt;p&gt;1)&amp;#160; Does not require the data provider to provider CLR types representing the entities exposed by the data source.&amp;#160; This meta data can be provided dynamically at runtime (or even per query) via a new metadata interface and does not require any static typed entities.&lt;/p&gt;  &lt;p&gt;2)&amp;#160; Provides a much cleaner way for third party provider writers to write and ship stand alone ADO.NET Data Service providers.&amp;#160; (No more partial classes like my Linq to Sql IUpdatable implementation).&lt;/p&gt;  &lt;p&gt;In the coming days I will posting a walk through for converting the Linq to Sql IUpdateable implementation to a full blown Linq to Sql provider for ADO.NET Data Services to demonstrate the new interface.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9485207" width="1" height="1"&gt;</description></item><item><title>Astoria v1.5 CTP now available</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/astoria-v1-5-ctp-now-available.aspx</link><pubDate>Wed, 18 Mar 2009 01:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9484998</guid><dc:creator>aconrad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9484998</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/03/17/astoria-v1-5-ctp-now-available.aspx#comments</comments><description>&lt;P&gt;In the fine tradition of &lt;A href="http://en.wikipedia.org/wiki/St._Patrick%27s_Day" mce_href="http://en.wikipedia.org/wiki/St._Patrick%27s_Day"&gt;Saint Patrick's Day&lt;/A&gt; we have released the first CTP of ADO.NET Data Services v1.5 today.&amp;nbsp; Download &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3e3d4eaf-227b-4ad3-ad0d-3613db8aa9df&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3e3d4eaf-227b-4ad3-ad0d-3613db8aa9df&amp;amp;displaylang=en"&gt;here&lt;/A&gt;.&amp;nbsp; Team blog announcement and "Getting Started" walk through video &lt;A href="http://blogs.msdn.com/astoriateam/archive/2009/03/16/ado-net-data-services-v1-5-ctp1-now-available-for-download.aspx" mce_href="http://blogs.msdn.com/astoriateam/archive/2009/03/16/ado-net-data-services-v1-5-ctp1-now-available-for-download.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;This is definitely a green release - with features like server driven paging and streaming blob support which will save you millions of server cycles.&amp;nbsp; We are planning on having several post on the team blogs explaining these and the rest of the v1.5 features soon.&amp;nbsp; Also probably some more of our design videos if I can get a spare moment...&lt;/P&gt;&lt;A href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2fastoriateam%2farchive%2f2009%2f03%2f01%2fannouncing-ado-net-data-services-v1-5-ctp1.aspx"&gt;&lt;IMG border=0 alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2fastoriateam%2farchive%2f2009%2f03%2f01%2fannouncing-ado-net-data-services-v1-5-ctp1.aspx"&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9484998" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/aconrad/archive/tags/Astoria/">Astoria</category><category domain="http://blogs.msdn.com/b/aconrad/archive/tags/ADO-NET+Data+Services/">ADO.NET Data Services</category></item><item><title>VSlive Presentations and demos</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/03/04/vslive-presentations-and-demos.aspx</link><pubDate>Thu, 05 Mar 2009 09:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9459359</guid><dc:creator>aconrad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9459359</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/03/04/vslive-presentations-and-demos.aspx#comments</comments><description>&lt;P&gt;Last week I presented two talks about ADO.NET Data Services at VSLive in San Francisco.&amp;nbsp; As promised to the talk attendees, here are the slides and demos.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9459359" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-45-93-59/VSLivePresentationsAndDemos.zip" length="1354527" type="application/x-zip-compressed" /></item><item><title>OOB == Out of Band</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/03/02/oob-out-of-band.aspx</link><pubDate>Mon, 02 Mar 2009 23:08:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9455050</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9455050</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/03/02/oob-out-of-band.aspx#comments</comments><description>&lt;p&gt;Yesterday we announced that we will be releasing an update to ADO.NET Data Services that we are calling ADO.NET Data Services v1.5.&amp;#160; For more details, see Mike Flasko's write up &lt;a href="http://blogs.msdn.com/astoriateam/archive/2009/03/01/announcing-ado-net-data-services-v1-5-ctp1.aspx"&gt;here&lt;/a&gt; on the team blog.&lt;/p&gt;  &lt;p&gt;We should have a CTP out very soon.&amp;#160; I am personally very excited about having a ship vehicle that will allow us to ship quickly and hence get some new features out quickly (i.e. Row Count, Binding, Server Driven Paging, etc) to solve some key problems that we have heard about from the community.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now we just have to find some time to film a few more design videos...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9455050" width="1" height="1"&gt;</description></item><item><title>Using timeout setting with Astoria client</title><link>http://blogs.msdn.com/b/aconrad/archive/2009/01/13/using-timeout-setting-with-astoria-client.aspx</link><pubDate>Wed, 14 Jan 2009 00:06:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9317139</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9317139</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2009/01/13/using-timeout-setting-with-astoria-client.aspx#comments</comments><description>&lt;p&gt;Believe it or not, but we did ship ADO.NET Data Services with a few bugs.&amp;#160;&amp;#160;&amp;#160; One issue in particular is somewhat nasty.&amp;#160;&amp;#160; However the code developers might be tempted to write to work around the bug could cause far worse problems down the road when we fix the initial bug.&amp;#160; Hence I wanted to write a short post to describe the issue and give a quick sample of how to write code that &lt;b&gt;&lt;i&gt;will work now and in the future&lt;/i&gt;&lt;/b&gt; when we fix the issue.&lt;/p&gt;  &lt;p&gt;The problem exists in the ADO.NET Data Services client (System.Data.Services.Client.dll) we shipped with .NET 3.5 sp1 and Silverlight 2.0 SDK.&amp;#160; It also is a issue for developers using the &lt;a href="http://msdn.microsoft.com/en-us/library/dd179423.aspx"&gt;Windows Azure Table Storage API&lt;/a&gt; since that is built on top of the ADO.NET Data Services client.&lt;/p&gt;  &lt;p&gt;In particular, we do not throw the correct exception when a HTTP request has problems while being sent to the server.&amp;#160; I.e. a request timeouts, there is a bad server name, etc.&amp;#160; In other words, any problem that would normally raise a System.Net.WebException.&amp;#160; Unfortunately, in V1 of ADO.NET Data Services a NullReferenceException is raised instead of a WebException and even worse, the exception message is lost:&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="csharpcode"&gt; DataServiceContext context = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataServiceContext(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://BadServer/Northwind.svc&amp;quot;&lt;/span&gt;));
 context.Timeout = 1; &lt;span class="rem"&gt;// Set small timeout amount to intentionally timeout request&lt;/span&gt;
 DataServiceQuery&amp;lt;Customer&amp;gt; query = context.CreateQuery&amp;lt;Customer&amp;gt;(&lt;span class="str"&gt;&amp;quot;Customers&amp;quot;&lt;/span&gt;);

 &lt;span class="kwrd"&gt;try&lt;/span&gt;
 {
     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Customer c &lt;span class="kwrd"&gt;in&lt;/span&gt; query) { }
 }
 &lt;span class="kwrd"&gt;catch&lt;/span&gt; (NullReferenceException nre)
 {
     &lt;span class="rem"&gt;// in V1, NullReferenceException is thrown instead of WebException.&lt;/span&gt;
     &lt;span class="rem"&gt;// Also, no useful description&lt;/span&gt;
     Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Something bad happened!&amp;quot;&lt;/span&gt;);
 }&lt;/pre&gt;

&lt;p&gt;We are planning on fixing this bug in a future version of ADO.NET Data Services client (both in .NET and Silverlight) so if your code relies exclusively on catching the NullReference exception, it will be broken when we ship the fix.&amp;#160; Hence, to make your code robust &amp;#8211; have your code explicitly catch both exception types:&lt;/p&gt;

&lt;pre class="csharpcode"&gt; DataServiceContext context = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataServiceContext(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://BadServer/Northwind.svc&amp;quot;&lt;/span&gt;));
 context.Timeout = 1;  &lt;span class="rem"&gt;// Set small timeout amount to intentionally timeout request&lt;/span&gt;
 DataServiceQuery&amp;lt;Customer&amp;gt; query = context.CreateQuery&amp;lt;Customer&amp;gt;(&lt;span class="str"&gt;&amp;quot;Customers&amp;quot;&lt;/span&gt;);

 &lt;span class="kwrd"&gt;try&lt;/span&gt;
 {
      &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Customer c &lt;span class="kwrd"&gt;in&lt;/span&gt; query) { }
 }
 &lt;span class="kwrd"&gt;catch&lt;/span&gt; (WebException e)
 {
&lt;span class="rem"&gt;&lt;font color="#000000"&gt;     &lt;/font&gt;// When fix is shippped, will ADO.NET Data Services will correctly throw webException&lt;/span&gt;
     Console.WriteLine(e.Message);
 }
 &lt;span class="kwrd"&gt;catch&lt;/span&gt; (NullReferenceException nre)
 {
     &lt;span class="rem"&gt;// in V1, NullReferenceException is thrown instead of WebException.&lt;/span&gt;
     &lt;span class="rem"&gt;// Also, no useful description&lt;/span&gt;
     Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Something bad happened!&amp;quot;&lt;/span&gt;);
 }&lt;/pre&gt;

&lt;p&gt;We will update the team blog when we have a better idea of when the fix will be available.&amp;#160; All I can say now is we are looking into trying to get it out sooner than later, but we hope to have more information on this in the near future.&lt;/p&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9317139" width="1" height="1"&gt;</description></item><item><title>MSDN Webcast: geekSpeak: Silverlight and ADO.NET Data Services with John Papa</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/12/16/msdn-webcast-geekspeak-silverlight-and-ado-net-data-services-with-john-papa.aspx</link><pubDate>Tue, 16 Dec 2008 17:52:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226123</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9226123</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/12/16/msdn-webcast-geekspeak-silverlight-and-ado-net-data-services-with-john-papa.aspx#comments</comments><description>&lt;p&gt;On Wednesday &lt;a href="http://johnpapa.net/"&gt;John Papa&lt;/a&gt; will be giving a &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032397110&amp;amp;Culture=en-US "&gt;webcast&lt;/a&gt; about anything and everything you ever wanted to know when consuming Astoria Data Services from a Silverlight 2.0 app.&amp;#160; Should be a good one.&lt;/p&gt;  &lt;p&gt;I also noticed that his &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0596523092/johnpanet-20"&gt;new book&lt;/a&gt; will be out January 2nd.&amp;#160; I have already preordered my copy.&amp;#160; I do wonder where O'Reilly is finding animals for the covers these days.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226123" width="1" height="1"&gt;</description></item><item><title>What is IUpdatable?  Why should I care?</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/12/15/what-is-iupdatable-why-should-i-care.aspx</link><pubDate>Tue, 16 Dec 2008 01:59:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9222692</guid><dc:creator>aconrad</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9222692</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/12/15/what-is-iupdatable-why-should-i-care.aspx#comments</comments><description>&lt;p&gt;Over the past few weeks I have posted a couple of &lt;a href="http://blogs.msdn.com/aconrad/archive/2008/12/11/iupdateable-for-linq-to-sql-fixing-a-few-issues.aspx"&gt;samples&lt;/a&gt; of implementing IUpdateable for non-EF DALs so those can be used as data sources for ADO.NET Data Services.&amp;#160; A handful of people have asked me why this is interesting, so I now realize I should have given more background up front.&lt;/p&gt;  &lt;p&gt;Out of the box, the only DAL that gets read/ write behavior for free in ADO.NET Data Services is Entity Framework.&amp;#160; This is because internally in the ADO.NET Data Services bits, there is an implementation of an interface we call IUpdatable:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; System.Data.Services
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IUpdatable
    {
        &lt;span class="kwrd"&gt;void&lt;/span&gt; AddReferenceToCollection(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; resourceToBeAdded);
        &lt;span class="kwrd"&gt;void&lt;/span&gt; ClearChanges();
        &lt;span class="kwrd"&gt;object&lt;/span&gt; CreateResource(&lt;span class="kwrd"&gt;string&lt;/span&gt; containerName, &lt;span class="kwrd"&gt;string&lt;/span&gt; fullTypeName);
        &lt;span class="kwrd"&gt;void&lt;/span&gt; DeleteResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource);
        &lt;span class="kwrd"&gt;object&lt;/span&gt; GetResource(IQueryable query, &lt;span class="kwrd"&gt;string&lt;/span&gt; fullTypeName);
        &lt;span class="kwrd"&gt;object&lt;/span&gt; GetValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName);
        &lt;span class="kwrd"&gt;void&lt;/span&gt; RemoveReferenceFromCollection(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; resourceToBeRemoved);
        &lt;span class="kwrd"&gt;object&lt;/span&gt; ResetResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; resource);
        &lt;span class="kwrd"&gt;object&lt;/span&gt; ResolveResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; resource);
        &lt;span class="kwrd"&gt;void&lt;/span&gt; SaveChanges();
        &lt;span class="kwrd"&gt;void&lt;/span&gt; SetReference(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; propertyValue);
        &lt;span class="kwrd"&gt;void&lt;/span&gt; SetValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; propertyValue);
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The reason behind this interface is that when we were designing V1 of ADO.NET Data Services we wanted to the user to have the ability to plug in LINQ data sources(.e. Linq to Sql, Entity Framework, nHibernate, etc).&amp;#160; For read only access, this is really straight forward and general uniform across LINQ DALs.&amp;#160; All the data source has to expose is a type with public IQueryable&amp;lt;T&amp;gt; entry points for each of their EntitySets.&amp;#160; For write operations, it was a completely different story since there is no common API for updating LINQ based DALs.&amp;#160; So we invented IUpdateable.&lt;/p&gt;

&lt;p&gt;So any data source for Astoria that wants to support PUT, POST, and DELETE they must have an implementation of IUpdateable for their specific DAL. Hence why I started projects on Code Gallery to provide reference implementations of implementing IUpdatable for &lt;a href="http://code.msdn.microsoft.com/SubSonicForADONETDS"&gt;SubSonic&lt;/a&gt; and &lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=IUpdateableLinqToSql&amp;amp;ReleaseId=1753"&gt;Linq to Sql&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There actually are a few more smaller interfaces to implement to become a full fledge ADO.NET Data Service provider.&amp;#160; At some point in the near future, I will try to get a post up describing that stuff plus some preview of the refactoring we are doing in V2 of ADO.NET Data Services to make a nicer provider plugin model.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9222692" width="1" height="1"&gt;</description></item><item><title>Attention! Phani on Deck!</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/12/12/attention-phani-on-deck.aspx</link><pubDate>Fri, 12 Dec 2008 21:23:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9203030</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9203030</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/12/12/attention-phani-on-deck.aspx#comments</comments><description>&lt;p&gt;One of the most common feature requests we hear for Astoria is the ability to mark properties on an entity as hidden.&amp;#160; Currently in V1 we support this on the server, but not with the .NET or Silverlight clients.&lt;/p&gt;  &lt;p&gt;Phani, resident Astoria hacker (and a really good tester), has written a very good &lt;a href="http://blogs.msdn.com/phaniraj/archive/2008/12/11/customizing-serialization-of-entities-in-the-ado-net-data-services-client-library.aspx"&gt;post&lt;/a&gt; on how you can roll your own override of client serialization behavior to support this functionality with the v1 clients.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9203030" width="1" height="1"&gt;</description></item><item><title>IUpdateable for Linq to Sql - Fixing a few issues</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/12/11/iupdateable-for-linq-to-sql-fixing-a-few-issues.aspx</link><pubDate>Fri, 12 Dec 2008 03:32:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9199290</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9199290</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/12/11/iupdateable-for-linq-to-sql-fixing-a-few-issues.aspx#comments</comments><description>&lt;p&gt;Finally got IUpdateable.ResetResource() for Linq To Sql working correctly.&amp;#160; This means that REPLACE operations are now working correctly.&amp;#160; I have uploaded those changes to &lt;a href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;code gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Going forward all changes to the code with be available exclusively on code gallery.&amp;#160; Also, I am trying to track known open issues there with the issue tracking capability.&lt;/p&gt;  &lt;p&gt;Finally, if anyone wants to be a contributor to this &lt;a href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;project&lt;/a&gt; or the SubSonic &lt;a href="http://code.msdn.microsoft.com/SubSonicForADONETDS"&gt;one&lt;/a&gt;, please let me know.&amp;#160; Particularly for the latter, there is some considerable work to do.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9199290" width="1" height="1"&gt;</description></item><item><title>Developing aN Astoria data provider for SubSonic</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/12/05/developing-an-astoria-data-provider-for-subsonic.aspx</link><pubDate>Fri, 05 Dec 2008 21:37:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180477</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9180477</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/12/05/developing-an-astoria-data-provider-for-subsonic.aspx#comments</comments><description>&lt;p&gt;I have developed a data provider for &lt;a href="http://subsonicproject.com/"&gt;SubSonic&lt;/a&gt; to enable it as a ADO.NET Data Services data source. This ended up being a bit harder then I initially thought, and is definitely still a work in progress. If you are interested, I have started a &lt;a href="http://code.msdn.microsoft.com/SubSonicForADONETDS"&gt;code gallery project&lt;/a&gt; for it.&lt;/p&gt;  &lt;p&gt;I decided to base the first implementation of my provider on &lt;a href="http://blog.wekeroad.com/blog/subsonic-3-0-preview-2/"&gt;SubSonic 3.0 preview 2&lt;/a&gt;.&amp;#160; This is the first version of Sub Sonic that supports IQueryable&amp;lt;T&amp;gt; so getting read-only ADO.NET Data Service support over SubSonic is quite trivial. In fact, Jay Kimble has written a very nice post about how to do it &lt;a href="http://theruntime.com/blogs/jaykimble/archive/2008/11/18/quotsubsonicquot-for-services-found-subsonic-3--ado.net-data-services.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To use my SubSonic Astoria data provider, first follow Jay&amp;#8217;s instructions to set up your SubSonic DAL.&amp;#160; This includs a very nice addition he has made to the SubSonic T4 templates to automatically add the Astoria attribute for Key properties.&lt;/p&gt;  &lt;p&gt;Next, down load the file SubSonicIUpdateable.cs class from the &lt;a href="http://code.msdn.microsoft.com/SubSonicForADONETDS"&gt;code gallery project&lt;/a&gt;. Add it into your project and make it a partial class with the same type as the DB type generated by SubSonic code gen:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DB : IUpdatable&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Interestingly, SubSonic (at least version 3.0) doesn&amp;#8217;t really have a traditional O/R context type per se. In a way, this is practically a requirement for being a Astoria data source. Hence, my implementation utilizes a local context for each set of requests. Since this is only required to support scenarios required by IUpdateable, this was rather trivial to implement.&lt;/p&gt;

&lt;p&gt;A few known bugs/ issues with the initial code:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Binary fields support is currently not working. Hence inserting/ updating binary data is not happening. I think this is a SubSonic bug, but I need to spend some more cycles looking into it.&lt;/li&gt;

  &lt;li&gt;The IUpdateable implementation currently does not support batch mode. So even if the Astoria client is specifying batching, the DAL will send in the changes one at a time.&lt;/li&gt;

  &lt;li&gt;Only using SubSonic metadata to find primary key properties for a given type for concurrency checks. Probably should switch this to using Astoria metadata for this.&lt;/li&gt;

  &lt;li&gt;Identity values not working. I can&amp;#8217;t currently figure out how to get this to work with SubSonic 3.&lt;/li&gt;

  &lt;li&gt;I currently don&amp;#8217;t support relationships between entity types because that is not currently supported with the preview of SubSonic. &lt;/li&gt;

  &lt;li&gt;I will try to keep this up to date. Also, along with the code I have included the test project I use to test the implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One other interesting design issue that I discovered while implementing this is how Astoria Data Providers must be integrated at the source level. For example, what I really would like to do is implement something like SubSonicAstoriaProvidr&amp;lt;T&amp;gt; (where T is the DAL instance) and ship a assembly for that. With Astoria V1, that is next to impossible so one has to utilize something like partial classes to make this work. More to come on this later, but this has become one of the most important things we want to improve on in vNext.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180477" width="1" height="1"&gt;</description></item><item><title>Slides for my ASP.NET Connections Sessions</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/11/11/slides-for-my-asp-net-connections-sessions.aspx</link><pubDate>Tue, 11 Nov 2008 12:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9059583</guid><dc:creator>aconrad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9059583</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/11/11/slides-for-my-asp-net-connections-sessions.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;As promised the slides &amp;amp; demos&amp;nbsp;for my two&amp;nbsp;ASP.NET Connections talks&amp;nbsp;from 11/11/08:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MDA01: Deep Dive: ADO.NET Data Services Framework—Application Patterns&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MDA04: LINQ to XML, SQL, Entities, DataSets and Co.: Data Access Technologies Explained&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;- AKA Linq to Anything&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;EM&gt;Update: 11/12/08 - download now includes all demos including Linq to Twitter, PetBook, and my LINQ samples from our LINQ to Anything (MDA04) talk.&amp;nbsp; Will update again with Shyam's demos from LINQ&amp;nbsp;to Anything&amp;nbsp;sometime in the next few days.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9059583" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-05-95-83/DevConnectionsSlidesAndDemos.zip" length="3984932" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/aconrad/archive/tags/ADO-NET+Data+Services/">ADO.NET Data Services</category></item><item><title>IUpdateable for Linq To Sql</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/11/05/iupdateable-for-linq-to-sql.aspx</link><pubDate>Thu, 06 Nov 2008 07:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9046853</guid><dc:creator>aconrad</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9046853</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/11/05/iupdateable-for-linq-to-sql.aspx#comments</comments><description>&lt;p&gt;IUpdatable for Linq to Sql&lt;/p&gt;  &lt;p&gt;I have had an implementation of IUpdateable for Linq to Sql about half done for quite some time now. Yesterday I decided to bite the bullet and finish it up.&lt;/p&gt;  &lt;p&gt;Below I have included that code. I&amp;#8217;ve done some light testing, but I am sure there are some bugs &amp;#8211; and perhaps some perf fixes that can be made. My plan is to get this out on CodePlex as soon as I get a moment.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&lt;strong&gt;Update - 11/06/08, I actually ended up putting it on CodeGallery &lt;/strong&gt;&lt;/em&gt;&lt;a class="" href="http://code.msdn.microsoft.com/IUpdateableLinqToSql" mce_href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;&lt;strong&gt;&lt;em&gt;here&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 2 - 12/02/08, I found I had implemented ResetResource incorrectly to set the property values to the original values instead of the default values.&amp;#160; Fixed this and uploaded the file to &lt;a href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;CodeGallery&lt;/a&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 3 - 12/11/08 - Found another set of fixes for ResetResource.&amp;#160; Fixed this and uploaded the file to &lt;a href="http://code.msdn.microsoft.com/IUpdateableLinqToSql"&gt;CodeGallery&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note: Going forward all updates to the code will be exclusively on Code Gallery and will not posted to this blog.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A couple of notes about this code:&lt;/p&gt;  &lt;p&gt;1) I haven&amp;#8217;t implemented ClearChanges() yet. As far as I can tell there is really no straight forward to do this with Linq to Sql. It isn&amp;#8217;t that big of deal because ClearChanges is only required by Astoria when processing batches with multiple ChangeSets. Something that is not supported by the Astoria .NET client.&lt;/p&gt;  &lt;p&gt;2) The easiest way to use this is to define a partial class for your DataContext type and provide the implementation there. i.e. &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; partial &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; nwDataContext : IUpdatable&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;That way you don&amp;#8217;t need to change your generated context class.&lt;/p&gt;

&lt;p&gt;Next step - implementing IExpandProvider&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; myDataContext : IUpdatable
    {
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Creates the resource of the given type and belonging to the given container&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;containerName&amp;quot;&amp;gt;container name to which the resource needs to be added&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;fullTypeName&amp;quot;&amp;gt;full type name i.e. Namespace qualified type name of the resource&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;object representing a resource of given type and belonging to the given container&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; CreateResource(&lt;span class="kwrd"&gt;string&lt;/span&gt; containerName, &lt;span class="kwrd"&gt;string&lt;/span&gt; fullTypeName)
        {
            Type t = Type.GetType(fullTypeName);
            Debug.Assert(t != &lt;span class="kwrd"&gt;null&lt;/span&gt;);  &lt;span class="rem"&gt;// assume can find type&lt;/span&gt;
            ITable table = (ITable)&lt;span class="kwrd"&gt;this&lt;/span&gt;.GetType().GetProperty(containerName).GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
            &lt;span class="kwrd"&gt;object&lt;/span&gt; resource = Activator.CreateInstance(t);
            table.InsertOnSubmit(resource);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; resource;
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Gets the resource of the given type that the query points to&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;query&amp;quot;&amp;gt;query pointing to a particular resource&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;fullTypeName&amp;quot;&amp;gt;full type name i.e. Namespace qualified type name of the resource&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;object representing a resource of given type and as referenced by the query&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GetResource(IQueryable query, &lt;span class="kwrd"&gt;string&lt;/span&gt; fullTypeName)
        {
            &lt;span class="kwrd"&gt;object&lt;/span&gt; resource = &lt;span class="kwrd"&gt;null&lt;/span&gt;;

            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;object&lt;/span&gt; o &lt;span class="kwrd"&gt;in&lt;/span&gt; query)
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (resource != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                {
                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Expected a single response&amp;quot;&lt;/span&gt;);
                }
                resource = o;
            }

            &lt;span class="rem"&gt;// fullTypeName can be null for deletes&lt;/span&gt;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (fullTypeName != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; resource.GetType() != Type.GetType(fullTypeName))
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Unexpected type for resource&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; resource;
        }&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Resets the value of the given resource to its default value&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;resource&amp;quot;&amp;gt;resource whose value needs to be reset&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;same resource with its value reset&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ResetResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; resource)
        {
            Type t = resource.GetType();
            Debug.Assert(t != &lt;span class="kwrd"&gt;null&lt;/span&gt;);
            &lt;span class="kwrd"&gt;object&lt;/span&gt; newResource = Activator.CreateInstance(t);
            MetaTable table = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Mapping.GetTable(t);
            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var member &lt;span class="kwrd"&gt;in&lt;/span&gt; table.RowType.IdentityMembers)
            {
                &lt;span class="kwrd"&gt;object&lt;/span&gt; keyValue = member.MemberAccessor.GetBoxedValue(resource);
                member.MemberAccessor.SetBoxedValue(&lt;span class="kwrd"&gt;ref&lt;/span&gt; newResource, keyValue);
            }
            &lt;span class="kwrd"&gt;return&lt;/span&gt; newResource;
        }&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Sets the value of the given property on the target object&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;target object which defines the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyName&amp;quot;&amp;gt;name of the property whose value needs to be updated&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyValue&amp;quot;&amp;gt;value of the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; propertyValue)
        {
            PropertyInfo pi = targetResource.GetType().GetProperty(propertyName);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (pi == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Can't find property&amp;quot;&lt;/span&gt;);
            pi.SetValue(targetResource, propertyValue, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Gets the value of the given property on the target object&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;target object which defines the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyName&amp;quot;&amp;gt;name of the property whose value needs to be updated&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;the value of the property for the given target resource&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GetValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName)
        {
            PropertyInfo pi = targetResource.GetType().GetProperty(propertyName);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (pi == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Can't find property&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; pi.GetValue(targetResource, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Sets the value of the given reference property on the target object&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;target object which defines the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyName&amp;quot;&amp;gt;name of the property whose value needs to be updated&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyValue&amp;quot;&amp;gt;value of the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetReference(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; propertyValue)
        {
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.SetValue(targetResource, propertyName, propertyValue);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Adds the given value to the collection&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;target object which defines the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyName&amp;quot;&amp;gt;name of the property whose value needs to be updated&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;resourceToBeAdded&amp;quot;&amp;gt;value of the property which needs to be added&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddReferenceToCollection(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; resourceToBeAdded)
        {
            PropertyInfo pi = targetResource.GetType().GetProperty(propertyName);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (pi == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Can't find property&amp;quot;&lt;/span&gt;);
            IList collection = (IList) pi.GetValue(targetResource, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
            collection.Add(resourceToBeAdded);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Removes the given value from the collection&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;target object which defines the property&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;propertyName&amp;quot;&amp;gt;name of the property whose value needs to be updated&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;resourceToBeRemoved&amp;quot;&amp;gt;value of the property which needs to be removed&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RemoveReferenceFromCollection(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource, &lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName, &lt;span class="kwrd"&gt;object&lt;/span&gt; resourceToBeRemoved)
        {
            PropertyInfo pi = targetResource.GetType().GetProperty(propertyName);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (pi == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Can't find property&amp;quot;&lt;/span&gt;);
            IList collection = (IList)pi.GetValue(targetResource, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
            collection.Remove(resourceToBeRemoved);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Delete the given resource&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;targetResource&amp;quot;&amp;gt;resource that needs to be deleted&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DeleteResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; targetResource)
        {
            ITable table = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetTable(targetResource.GetType());
            table.DeleteOnSubmit(targetResource);
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Saves all the pending changes made till now&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SaveChanges()
        {
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.SubmitChanges();
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Returns the actual instance of the resource represented by the given resource object&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;resource&amp;quot;&amp;gt;object representing the resource whose instance needs to be fetched&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;The actual instance of the resource represented by the given resource object&amp;lt;/returns&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ResolveResource(&lt;span class="kwrd"&gt;object&lt;/span&gt; resource)
        {
            &lt;span class="kwrd"&gt;return&lt;/span&gt; resource;
        }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Revert all the pending changes.&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ClearChanges()
        {
        }
    }&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode {
	font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff
}
.csharpcode pre {
	font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff
}
.csharpcode pre {
	margin: 0em
}
.csharpcode .rem {
	color: #008000
}
.csharpcode .kwrd {
	color: #0000ff
}
.csharpcode .str {
	color: #006080
}
.csharpcode .op {
	color: #0000c0
}
.csharpcode .preproc {
	color: #cc6633
}
.csharpcode .asp {
	background-color: #ffff00
}
.csharpcode .html {
	color: #800000
}
.csharpcode .attr {
	color: #ff0000
}
.csharpcode .alt {
	margin: 0em; width: 100%; background-color: #f4f4f4
}
.csharpcode .lnum {
	color: #606060
}&lt;/style&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9046853" width="1" height="1"&gt;</description></item><item><title>Linq to anything</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/10/30/linq-to-anything.aspx</link><pubDate>Fri, 31 Oct 2008 07:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9025903</guid><dc:creator>aconrad</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=9025903</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/10/30/linq-to-anything.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Along with my manager &lt;A class="" href="http://blog.pather.net/" mce_href="http://blog.pather.net/"&gt;Shyam Pather&lt;/A&gt;, I am giving the following talk at the upcoming &lt;A class="" href="http://www.devconnections.com/" mce_href="http://www.devconnections.com/"&gt;Dev Connections conference&lt;/A&gt;:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;MDA04:&amp;nbsp;LINQ to XML, SQL, Entities, DataSets and Co.: Data Access Technologies Explained&lt;/SPAN&gt;&lt;/B&gt;&lt;BR&gt;&lt;FONT size=3&gt;With the release of the Microsoft .NET Framework 3.5, Microsoft introduced several new data access technologies based on its LINQ technology, such as LINQ to SQL and LINQ to DataSets. Shortly after, we expect Microsoft to release the ADO.NET Entity Framework which enables LINQ to Entities in addition to Entity SQL. Finally, we have all the existing ADO.NET data access patterns. This raises one important question: Which data access technology is best suited for which situation? In this session, we look at different scenarios and requirements that can inform your technology decision.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;As part of this talk, we are trying to give as many Linq demos as possible.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So far&amp;nbsp;we have:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Objects&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Sql&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Entities&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to DataSet&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to ADO.NET Data Services&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Windows Azure Storage&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Linq to Sql Data Services&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Plus a few surprises.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;I am looking at something real esoteric to write a Linq provider.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So if anyone has any ideas, please leave a comment or email me.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9025903" width="1" height="1"&gt;</description></item><item><title>Astoria team is hiring!</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/03/24/astoria-team-is-hiring.aspx</link><pubDate>Tue, 25 Mar 2008 00:56:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8334367</guid><dc:creator>aconrad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=8334367</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/03/24/astoria-team-is-hiring.aspx#comments</comments><description>&lt;p&gt;The Astoria team is hiring!  &lt;p&gt;We have positions open for Developers and Program Managers.&amp;nbsp; Currently, we are finishing up V1 and planning for V2, so it is a great time to join the team.&amp;nbsp; For V2, we are thinking about expanding the project into new areas (e.g. offline support, sync, dynamic language support) so there will be plenty of new and exciting work.  &lt;p&gt;Please forward your resume to &lt;a href="mailto:aconrad@microsoft.com"&gt;aconrad@microsoft.com&lt;/a&gt; if you’re interested.&amp;nbsp; The project covers a diverse set of technical areas (databases, Linq, O/R, REST, etc) so we value passion for the technology more than deep expertise in any particular area. The Astoria team uses an agile development model, so the project moves fast and we encourage individuals to take on a variety of roles and responsibilities. If you’re a developer who wants to be responsible for more than just coding (i.e. API design, specification writing, working with customers and partners) this team is the place for you!  &lt;p&gt;And finally, team members must be willing to participate in the grueling Team Astoria &lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/01/25/resting-on-the-slopes.aspx"&gt;off-site events&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Update 4/23/08 - As of the start of this week, we now have a block of additional new positions on the Astoria Team we need to fill.&amp;nbsp; These include development, program management, and quality assurance positions.&amp;nbsp; We are trying to fill these very quickly, so if you are interested please contact us soon.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8334367" width="1" height="1"&gt;</description></item><item><title>New Windows Live Services will be compatible with Astoria</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/02/28/new-windows-live-services-will-be-compatible-with-astoria.aspx</link><pubDate>Fri, 29 Feb 2008 03:08:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7938527</guid><dc:creator>aconrad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=7938527</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/02/28/new-windows-live-services-will-be-compatible-with-astoria.aspx#comments</comments><description>&lt;p&gt;The news is out! At Mix, Windows Live will be announcing several new Live Services with AtomPub endpoints.&amp;nbsp; These services will also be compatible with Astoria and therefor will work with the Astoria client library.&amp;nbsp; An excerpt from David Treadwell's &lt;a href="http://dev.live.com/blogs/devlive/archive/2008/02/27/213.aspx"&gt;post&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;Microsoft is making a large investment in unifying our developer platform protocols for services on the open, standards-based Atom format (&lt;/em&gt;&lt;/font&gt;&lt;a href="http://www.ietf.org/rfc/rfc4287.txt"&gt;&lt;font size="1"&gt;&lt;em&gt;RFC 4287&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt;) and the Atom Publishing Protocol (&lt;/em&gt;&lt;/font&gt;&lt;a href="http://www.ietf.org/rfc/rfc5023.txt"&gt;&lt;font size="1"&gt;&lt;em&gt;RFC 5023&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt;). At MIX we are enabling several new Live services with AtomPub endpoints which enable any HTTP-aware application to easily consume Atom feeds of photos and for unstructured application storage (see below for more details). Or you can use any Atom-aware public tools or libraries, such as &lt;/em&gt;&lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb412202.aspx"&gt;&lt;font size="1"&gt;&lt;em&gt;.NET WCF Syndication&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt; to read or write these cloud service-based feeds.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;In addition, these same protocols and the same services are now &lt;/em&gt;&lt;/font&gt;&lt;a href="http://astoria.mslivelabs.com/"&gt;&lt;font size="1"&gt;&lt;em&gt;ADO.NET Data Services&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt; (formerly known as “ Project Astoria”) compatible. This means we now support &lt;/em&gt;&lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb308959.aspx"&gt;&lt;font size="1"&gt;&lt;em&gt;LINQ&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt; queries from .NET code directly against our service endpoints, leveraging a large amount of existing knowledge and tooling shared with on-premise SQL deployments.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;The intent for these early, experimental releases are to gather valuable feedback from the community around our idiomatic and freely licensed extensions to AtomPub which deal with important service scenarios, such as URL formats, nested directories, image streams, and service metadata. You can read more about this on the &lt;/em&gt;&lt;/font&gt;&lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/02/13/atompub-support-in-the-ado-net-data-services-framework.aspx"&gt;&lt;font size="1"&gt;&lt;em&gt;Project Astoria team blog&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt;.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;There will also be a few more surprises in this area announced at MIX. Stay tuned. Try them out and give us your &lt;/em&gt;&lt;/font&gt;&lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/02/13/atompub-support-in-the-ado-net-data-services-framework.aspx"&gt;&lt;font size="1"&gt;&lt;em&gt;feedback&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt;&lt;em&gt;!&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;At Mix, we have a Project Astoria talk all about using the Astoria client library to consume Live services.&amp;nbsp; &lt;blockquote&gt; &lt;p&gt;RESTful Data Services with the ADO.NET Data Services Framework&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Wednesday, March 5 4:30 PM - 5:45 PM, Lando 4204&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Speaker(s): Pablo Castro&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Audience(s): Technical&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Session Type: Breakout&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Learn how to use ADO.NET Data Services Framework to easily create and consume REST data services on the web. This session will cover the main concepts of the ADO.NET Data Services Framework (aka Project "Astoria"), show how to use it, and discuss how to use it with Microsoft's broader vision of a common interface for Windows Live and 3rd party services.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So if you are going to Mix, be sure to go to that talk.&amp;nbsp; The Mix talks are also available online 24-48 hours after they are given. &lt;p&gt;On a related note &lt;a href="http://blogs.msdn.com/pablo/"&gt;Pablo&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mflasko/"&gt;Mike&lt;/a&gt;, and myself will all be at Mix next week.&amp;nbsp; We should be spending a lot of time in the hands on lab/ Open Spaces area.&amp;nbsp; If anyone has any questions about any of our projects, wants to see some Astoria demos, etc - drop&amp;nbsp; me a line and we can set something up.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7938527" width="1" height="1"&gt;</description></item><item><title>Astoria offsite</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/01/26/astoria-offsite.aspx</link><pubDate>Sat, 26 Jan 2008 21:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7258927</guid><dc:creator>aconrad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=7258927</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/01/26/astoria-offsite.aspx#comments</comments><description>&lt;P&gt;Last Wednesday we had a very important &lt;A class="" href="http://blogs.msdn.com/astoriateam/archive/2008/01/25/resting-on-the-slopes.aspx" mce_href="http://blogs.msdn.com/astoriateam/archive/2008/01/25/resting-on-the-slopes.aspx "&gt;offsite&lt;/A&gt; for the entire Project Astoria team:&lt;/P&gt;
&lt;P&gt;Many key technical issues were discussed.&amp;nbsp;In fact, the entire team was quite spent after a long, hard day.&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7258927" width="1" height="1"&gt;</description></item><item><title>Project Astoria Links for 1/15/08</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/01/15/project-astoria-links-for-1-15-08.aspx</link><pubDate>Wed, 16 Jan 2008 03:55:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7123241</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=7123241</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/01/15/project-astoria-links-for-1-15-08.aspx#comments</comments><description>&lt;p&gt;Michael Sync has written a &lt;a href="http://michaelsync.net/2008/01/15/consuming-adonet-data-service-astoria-from-silverlight"&gt;sample&lt;/a&gt; using the new Astoria Silverlight client library.&lt;/p&gt; &lt;p&gt;David Hayden posted a nice &lt;a href="http://codebetter.com/blogs/david.hayden/archive/2008/01/08/getting-started-with-ado-net-data-services.aspx"&gt;walk through&lt;/a&gt; for getting an Data Service up and running over Linq To Sql.&lt;/p&gt; &lt;p&gt;Our own Macelo Ruiz talks about some &lt;a href="http://blogs.msdn.com/marcelolr/archive/2008/01/08/updates-to-url-syntax-for-december-ctp-of-ado-net-data-services.aspx"&gt;tweaks&lt;/a&gt; we made to the Astoria URI syntax on his personal blog.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7123241" width="1" height="1"&gt;</description></item><item><title>VB version of CopyToDataTable&lt;T&gt;</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/01/14/vb-version-of-copytodatatable-t.aspx</link><pubDate>Tue, 15 Jan 2008 02:21:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7112892</guid><dc:creator>aconrad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=7112892</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/01/14/vb-version-of-copytodatatable-t.aspx#comments</comments><description>&lt;p&gt;Matthew Wills ported my original C# &lt;a href="http://blogs.msdn.com/aconrad/archive/2008/01/11/pathetic-plea-for-help.aspx#7103127"&gt;CopyToDataTable&amp;lt;T&amp;gt; Linq operator to VB&lt;/a&gt;.&amp;nbsp; According to him, he used &lt;a href="http://www.tangiblesoftwaresolutions.com/Product_Details/Instant_VB.htm"&gt;Instant VB&lt;/a&gt; to convert the code from C# to VB and then hand tweaked it.&amp;nbsp; Looks like a fairly cool tool that we could use to port our C# unit tests to VB.&amp;nbsp;&amp;nbsp; (We try to run the same functionals in both VB and C# these days because of the differences in Linq and comprehension support between the two compilers).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7112892" width="1" height="1"&gt;</description></item><item><title>Updated Astoria Silverlight client now available</title><link>http://blogs.msdn.com/b/aconrad/archive/2008/01/11/updated-astoria-silverlight-client-now-available.aspx</link><pubDate>Sat, 12 Jan 2008 05:10:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7082634</guid><dc:creator>aconrad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/aconrad/rsscomments.aspx?WeblogPostID=7082634</wfw:commentRss><comments>http://blogs.msdn.com/b/aconrad/archive/2008/01/11/updated-astoria-silverlight-client-now-available.aspx#comments</comments><description>&lt;p&gt;The updated Astoria Silverlight client is now &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fd9c2a29-7383-4b2e-9ec9-0c6120718d4f&amp;amp;displaylang=en"&gt;available&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This client is 95% compatible with the client library we released back in the December CTP (we hope to make this 100% source code compatible by RTM) + works with the latest &lt;a href="http://msdn2.microsoft.com/en-us/silverlight/bb419317.aspx"&gt;Silverlight 1.1 Alpha&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;When the next preview of Silverlight releases this spring, we will release an update of the Astoria Silverlight client.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7082634" width="1" height="1"&gt;</description></item></channel></rss>
