<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>TheChaseMan's Frenetic SoapBox</title><link>http://unboxedsolutions.com/sean/</link><description>Always looking for better ways to do things...</description><managingEditor>Sean Chase</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Sean Chase</dc:creator><title>Fun w/ Visual Studio 2008</title><link>http://unboxedsolutions.com/sean/archive/2007/11/27/9404.aspx</link><pubDate>Tue, 27 Nov 2007 14:48:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/11/27/9404.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/9404.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/11/27/9404.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/9404.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/9404.aspx</trackback:ping><description>&lt;P&gt;I'm sure you've heard by now the Visual Studio 2008 is RTM. If you haven't already, play around a bit with object/collection initializers and LINQ. One interesting thing&amp;nbsp; I've learned today is the &amp;#8220;let&amp;#8221; clause which allows you to define a subexpression in a LINQ query. Also you can generate XML fairly easily in your LINQ queries (or anything else you want to transform for that matter).&lt;/P&gt;

&lt;div&gt;&lt;style&gt;
&lt;!--
 p.MsoNormal
 {mso-style-parent:"";
 margin-bottom:.0001pt;
 font-size:12.0pt;
 font-family:"Times New Roman";
 margin-left:0in; margin-right:0in; margin-top:0in}
--&gt;
&lt;/style&gt;
&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: blue"&gt;class&lt;/span&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt; &lt;span style="color:#2B91AF"&gt;Program&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2B91AF"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2B91AF"&gt;Person&lt;/span&gt;&amp;gt; people = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2B91AF"&gt;Person&lt;/span&gt;&amp;gt;(){&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;Person&lt;/span&gt; { Name = &lt;span style="color:#A31515"&gt;&amp;quot;Jack&amp;quot;&lt;/span&gt;, Age = 22, FavoriteColors = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt;[] { &lt;span style="color:#A31515"&gt;&amp;quot;Green&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515"&gt;&amp;quot;Red&amp;quot;&lt;/span&gt; } },&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;Person&lt;/span&gt; { Name = &lt;span style="color:#A31515"&gt;&amp;quot;Jill&amp;quot;&lt;/span&gt;, Age = 33, FavoriteColors = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt;[] { &lt;span style="color:#A31515"&gt;&amp;quot;Black&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515"&gt;&amp;quot;Blue&amp;quot;&lt;/span&gt; } }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;var&lt;/span&gt; xmlSource = &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;XElement&lt;/span&gt;(&lt;span style="color:#A31515"&gt;&amp;quot;People&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;from&lt;/span&gt; person &lt;span style="color:blue"&gt;in&lt;/span&gt; people&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;let&lt;/span&gt; colors = &lt;span style="color:#2B91AF"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#A31515"&gt;&amp;quot;{0},{1}&amp;quot;&lt;/span&gt;, person.FavoriteColors[0], person.FavoriteColors[1])&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;select&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;XElement&lt;/span&gt;(&lt;span style="color:#A31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;XElement&lt;/span&gt;(&lt;span style="color:#A31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;, person.Name),&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;XElement&lt;/span&gt;(&lt;span style="color:#A31515"&gt;&amp;quot;Age&amp;quot;&lt;/span&gt;, person.Age),&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2B91AF"&gt;XElement&lt;/span&gt;(&lt;span style="color:#A31515"&gt;&amp;quot;FavoriteColors&amp;quot;&lt;/span&gt;, colors)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2B91AF"&gt;Console&lt;/span&gt;.WriteLine(xmlSource);&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;/* output:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;People&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Person&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Jack&amp;lt;/Name&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Age&amp;gt;22&amp;lt;/Age&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FavoriteColors&amp;gt;Green,Red&amp;lt;/FavoriteColors&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Person&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Person&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Jill&amp;lt;/Name&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Age&amp;gt;33&amp;lt;/Age&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FavoriteColors&amp;gt;Black,Blue&amp;lt;/FavoriteColors&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Person&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/People&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New; color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-autospace: none"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10.0pt; font-family: Courier New"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/9404.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>OCI-22053: overflow error</title><link>http://unboxedsolutions.com/sean/archive/2007/10/25/6654.aspx</link><pubDate>Thu, 25 Oct 2007 12:31:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/10/25/6654.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/6654.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/10/25/6654.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/6654.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/6654.aspx</trackback:ping><description>&lt;P&gt;Just FYI - if you are using the System.Net.OracleClient namespace with 10g it is possible you will run into this error. Now before you start getting too excited about being able to set the ReturnProviderSpecificTypes&amp;nbsp;property on an adapter, you can run into this problem with output parameters on an ExecuteNonQuery so it's probably a safer bet to use the OleDb provider with 10g. &lt;/P&gt;
&lt;P&gt;Flame on if I'm wrong.&lt;/P&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/6654.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Getting Results from an Oracle Stored Proc</title><link>http://unboxedsolutions.com/sean/archive/2007/10/25/6653.aspx</link><pubDate>Thu, 25 Oct 2007 12:13:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/10/25/6653.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/6653.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/10/25/6653.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/6653.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/6653.aspx</trackback:ping><description>&lt;P&gt;I'm not going to bash Oracle...it does a good job of bashing itself. For those of us used to being productive using SQL Server (I've heard it said that Oracle sells its products to managers, Microsoft sells to developers), here's some interesting info on calling an Oracle proc.&lt;/P&gt;
&lt;P&gt;OK, so you are used to SQL Server and you want to create a proc that ultimately (at some point) returns some results in the form of...well, a bunch of records!&lt;/P&gt;&lt;CODE&gt;create procedure foo as &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a, b, c &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from bar &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where blah = 1 &lt;/CODE&gt;
&lt;P&gt;You jump into Oracle and try the same thing you'll get this nice error message:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;PLS-00428: an INTO clause is expected in this SELECT statement. Also we are better than you M$ noobcakes and Bill Gates is a jerk. Windoze is teh suxxorz. ZOMG barrens chat.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The way around this is to use a ref cursor. It's silly and it's juvenile and it's like going back in time, but it works. &lt;A href="http://support.microsoft.com/?id=309361"&gt;http://support.microsoft.com/?id=309361&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But before you get to pissed off about having to create an Oracle package and define a cursor type, with 9i and 10g you can use sys_refcursor and save the trouble.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;CREATE OR REPLACE PROCEDURE Foo (io_cursor IN OUT sys_refcursor) AS &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;v_cursor sys_refcursor; &lt;BR&gt;&lt;BR&gt;... &lt;BR&gt;begin &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; open v_cursor for &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a, b, c &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where blah = 1; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; io_cursor := v_cursor; &lt;BR&gt;end; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;That's it, you're done! Yay!&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Oh wait no you're not!!! Because if you want to test it you're probably thinking "Hey I can just type EXEC&amp;nbsp;Foo in Query Analyzer." Sorry there's more pig $#!+ you have to go through than that. Isn't DBArtisan a great tool?!?! *vomits* &lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;declare &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/CODE&gt;&lt;CODE&gt;v_cursor sys_refcursor; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a number;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b number;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c number&lt;BR&gt;&lt;BR&gt;begin &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/CODE&gt;&lt;CODE&gt;Foo(io_cursor =&amp;gt; v_cursor); &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch v_cursor into a, b, c;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit when v_cursor%NOTFOUND;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbms_output.put_line(a ||&amp;nbsp;b || c); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close v_cursor; &lt;BR&gt;end; &lt;CODE&gt;&lt;/CODE&gt;&lt;/CODE&gt;&lt;/P&gt;Hopefully you're not stuck in Oracle hell (god I miss SQL Server 2005), but if you've had your nose jammed in it like a bad dog and you're not getting help from the elitist oracle buff community, and you run across this problem...hope it helps. :-)&lt;img src ="http://unboxedsolutions.com/sean/aggbug/6653.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Using the AJAX Toolkit AutoCompleteExtender with Visual Studio SP1</title><link>http://unboxedsolutions.com/sean/archive/2007/02/23/1588.aspx</link><pubDate>Fri, 23 Feb 2007 14:20:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/02/23/1588.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1588.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/02/23/1588.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1588.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1588.aspx</trackback:ping><description>&lt;p&gt;Just a heads up if you use the
&lt;a target="_blank" href="http://ajax.asp.net/ajaxtoolkit/AutoComplete/AutoComplete.aspx"&gt;
AutoCompleteExtender Ajax control&lt;/a&gt;. I'm not sure if this is because I'm using 
Visual Studio SP1 (using Web Application Projects), but I could not get this 
control to work with an ASMX, but rather a WebMethod in the page's code-behind. 
Also, make sure your &lt;i&gt;ServiceMethod &lt;/i&gt;attribute declaration is &lt;u&gt;&lt;b&gt;static&lt;/b&gt;&lt;/u&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src="/sean/images/AutoCompleteExtender.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;%@ Register Assembly=&amp;quot;AjaxControlToolkit&amp;quot; 
Namespace=&amp;quot;AjaxControlToolkit&amp;quot; TagPrefix=&amp;quot;ajaxToolkit&amp;quot; %&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br&gt;
&amp;lt;asp:ScriptManager ID=&amp;quot;ScriptManager1&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br&gt;
&amp;lt;asp:TextBox runat=&amp;quot;server&amp;quot; ID=&amp;quot;myTextBox&amp;quot; Width=&amp;quot;300&amp;quot; autocomplete=&amp;quot;off&amp;quot; /&amp;gt;&lt;br&gt;
&amp;lt;ajaxToolkit:AutoCompleteExtender runat=&amp;quot;server&amp;quot; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
ID=&amp;quot;autoComplete1&amp;quot; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
TargetControlID=&amp;quot;myTextBox&amp;quot;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
ServiceMethod=&amp;quot;GetCompletionList&amp;quot;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
MinimumPrefixLength=&amp;quot;1&amp;quot; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
CompletionInterval=&amp;quot;1000&amp;quot;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
EnableCaching=&amp;quot;true&amp;quot;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
CompletionSetCount=&amp;quot;12&amp;quot; /&amp;gt;&lt;br&gt;
&amp;lt;/form&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;public partial class _Default : System.Web.UI.Page {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebMethod]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string[] GetCompletionList(string prefixText, 
int count) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sql = String.Format(&amp;quot;select 
companyName from customers where companyname like @companyname + '%'&amp;quot;);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;string&amp;gt; companyList = new 
List&amp;lt;string&amp;gt;();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlConnection connection = new 
SqlConnection(&amp;quot;Integrated Security=SSPI;Initial Catalog=Northwind;Data 
Source=.&amp;quot;))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlCommand command = new 
SqlCommand(sql, connection)) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
connection.Open();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
command.Parameters.AddWithValue(&amp;quot;@companyname&amp;quot;, prefixText);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlDataReader 
reader = command.ExecuteReader()) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
while (reader.Read()) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
companyList.Add(reader.GetString(0));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return companyList.ToArray();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1588.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Too Many Breakpoints = Bad Visual Studio Performance</title><link>http://unboxedsolutions.com/sean/archive/2007/02/15/1585.aspx</link><pubDate>Thu, 15 Feb 2007 15:18:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/02/15/1585.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1585.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/02/15/1585.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1585.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1585.aspx</trackback:ping><description>Just wanted to share this in case anyone has issues with very slow build and debug time in Visual Studio for ASP.NET applications. This solution might sound a lot like holding tin foil over your head, but....try removing all of your breakpoints. "Clear All Breakpoints" can actually&amp;nbsp;make good things happen.&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1585.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Label and Literal Controls in ASP.NET</title><link>http://unboxedsolutions.com/sean/archive/2007/02/15/1584.aspx</link><pubDate>Thu, 15 Feb 2007 15:12:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2007/02/15/1584.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1584.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2007/02/15/1584.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1584.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1584.aspx</trackback:ping><description>&lt;a href=http://haacked.com/archive/2007/02/15/ASP.NET_Tip_-_Use_The_Label_Control_Correctly.aspx target="_blank"&gt;This&lt;/a&gt; sums it up nicely.&amp;nbsp; :-)&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1584.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Creating a Web Service to Stream Database Records in Chunks</title><link>http://unboxedsolutions.com/sean/archive/2006/12/18/1549.aspx</link><pubDate>Mon, 18 Dec 2006 01:19:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2006/12/18/1549.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1549.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2006/12/18/1549.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1549.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1549.aspx</trackback:ping><description>&lt;p&gt;We&amp;#39;ve had some interesting discussions about Web Services around the office 
lately. One of the major challenges are people that want to consume Web Services 
that transfer large amounts of data rather than a single operation per record or 
having to deal with filter constraints. The major problem with this is 
&amp;quot;ballooning&amp;quot; of data on the server - meaning you build up a huge result set to 
send back to the client which can take up a ton of resources. This can increase 
exponentially as the number of requests increases. One solution is to stream the 
data to the clients in &amp;quot;chunks.&amp;quot;
&lt;a target="_blank" href="http://blogs.msdn.com/yassers"&gt;Yasser Shohoud&lt;/a&gt; has a 
really good example of
&lt;a target="_blank" href="http://blogs.msdn.com/yassers/archive/2004/11/10/255212.aspx"&gt;
streaming songs&lt;/a&gt; in this manner; however, many of us are dealing with data 
from a database rather than songs so I wanted to blog about how this can be 
done. First I&amp;#39;d like to thank someone who wishes to remain anonymous (we&amp;#39;ll call 
him Homer) for helping me understand conceptually what was happening during the 
most challenging part of this example: ReadXml().&lt;/p&gt;
&lt;p&gt;This example is architected with three assemblies: Client, Web Service, and a 
Common library. Let&amp;#39;s start with the Common library where our main functionality 
will be a class named CustomerStream. CustomerStream simply implements 
IXmlSerializable. This requires us to implement GetSchema, ReadXml, and WriteXml 
methods. CustomerStream will be designed so that we can pass it a SqlDataReader 
in the constructor so we can use that to write the data in chunks. First, we&amp;#39;ll 
implement GetSchema which is very simple, and WriteXml. WriteXml will use our 
SqlDataReader to write out our data chunks (in this case we&amp;#39;ll use Customer 
records from the Northwind example database).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 namespace\cf0  StreamService.Common \{\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 CustomerStream\cf0  : \cf10 IXmlSerializable\cf0  \{\par ??        \cf2 private\cf0  \cf2 const\cf0  \cf2 string\cf0  ns = \cf13 "http://tempuri.org"\cf0 ;\par ??        \cf2 private\cf0  \cf10 SqlDataReader\cf0  _reader;\par ??        \par ??        \cf2 public\cf0  CustomerStream() \{ \}\par ??\par ??        \cf2 public\cf0  CustomerStream(\cf10 SqlDataReader\cf0  reader) \{\par ??            _reader = reader;\par ??        \}\par ??\par ??        \cf2 public\cf0  System.Xml.Schema.\cf10 XmlSchema\cf0  GetSchema() \{\par ??            \cf2 string\cf0  schema = \cf13 @"&amp;lt;xs:schema id=""Customer"" targetNamespace=""http://tempuri.org/Customer.xsd"" elementFormDefault=""qualified"" xmlns=""http://tempuri.org/Customer.xsd"" xmlns:mstns=""http://tempuri.org/Customer.xsd"" xmlns:xs=""http://www.w3.org/2001/XMLSchema""&amp;gt;\par ??                              &amp;lt;xs:element name=""Customer""&amp;gt;\par ??                                &amp;lt;xs:complexType&amp;gt;\par ??                                  &amp;lt;xs:sequence&amp;gt;\par ??                                    &amp;lt;xs:element name=""CustomerID"" type=""xs:string"" /&amp;gt;\par ??                                    &amp;lt;xs:element name=""CompanyName"" type=""xs:string"" /&amp;gt;\par ??                                    &amp;lt;xs:element name=""ContactName"" type=""xs:string"" /&amp;gt;\par ??                                    &amp;lt;xs:element name=""Country"" type=""xs:string"" /&amp;gt;\par ??                                    &amp;lt;xs:element name=""Phone"" type=""xs:string"" /&amp;gt;\par ??                                  &amp;lt;/xs:sequence&amp;gt;\par ??                                &amp;lt;/xs:complexType&amp;gt;\par ??                              &amp;lt;/xs:element&amp;gt;\par ??                            &amp;lt;/xs:schema&amp;gt;"\cf0 ;\par ??\par ??            \cf10 XmlSchema\cf0  xs = \cf10 XmlSchema\cf0 .Read(\cf2 new\cf0  \cf10 StringReader\cf0 (schema), \cf2 null\cf0 );\par ??            \cf2 return\cf0  xs;\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf10 CustomerDataReader\cf0  ExecuteCustomerDataReader() \{\par ??            \cf10 CustomerDataReader\cf0  reader = \cf2 new\cf0  \cf10 CustomerDataReader\cf0 (\cf10 Environment\cf0 .CurrentDirectory + \cf13 "\\\\Customers.xml"\cf0 );\par ??            \cf2 return\cf0  reader;\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 void\cf0  ReadXml(System.Xml.\cf10 XmlReader\cf0  reader) \{\par ??            \cf2 using\cf0  (\cf10 XmlTextWriter\cf0  xwriter = \cf2 new\cf0  \cf10 XmlTextWriter\cf0 (\cf10 Environment\cf0 .CurrentDirectory + \cf13 "\\\\Customers.xml"\cf0 , \cf10 Encoding\cf0 .UTF8)) \{\par ??                xwriter.WriteRaw(\cf13 @"&amp;lt;?xml version=""1.0"" encoding=""utf-8""?&amp;gt;"\cf0 );\par ??                xwriter.WriteStartElement(\cf13 "Customers"\cf0 );\par ??\par ??                \cf2 while\cf0  (reader.Read()) \{\par ??                    \cf2 if\cf0  (reader.LocalName == \cf13 "Customer"\cf0 ) \{\par ??                        xwriter.WriteStartElement(\cf13 "Customer"\cf0 );\par ??                        reader.ReadStartElement();\par ??\par ??                        \cf2 while\cf0  (reader.NodeType != \cf10 XmlNodeType\cf0 .EndElement) \{\par ??                            xwriter.WriteElementString(reader.LocalName, reader.ReadElementString());\par ??                        \}\par ??                        xwriter.WriteEndElement();\par ??                    \}\par ??                \}\par ??                xwriter.WriteEndElement();\par ??            \}\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 void\cf0  WriteXml(System.Xml.\cf10 XmlWriter\cf0  writer) \{\par ??            \cf2 if\cf0  (_reader == \cf2 null\cf0 ) \cf2 throw\cf0  \cf2 new\cf0  \cf10 InvalidOperationException\cf0 (\cf13 "SqlDataReader expected"\cf0 );\par ??            \par ??            \cf2 using\cf0  (_reader) \{\par ??                \cf2 while\cf0  (_reader.Read()) \{\par ??                    writer.WriteStartElement(\cf13 "Customer"\cf0 , ns);\par ??                    \cf2 for\cf0  (\cf2 int\cf0  fieldIndex = 0; fieldIndex &amp;lt; _reader.FieldCount; fieldIndex++) \{\par ??                        writer.WriteElementString(_reader.GetName(fieldIndex), ns, _reader.GetValue(fieldIndex).ToString());\par ??                    \}\par ??                    writer.WriteEndElement();\par ??                \}\par ??            \}\par ??        \}\par ??    \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; StreamService.Common {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerStream&lt;/span&gt; : &lt;span style="color: teal;"&gt;IXmlSerializable&lt;/span&gt; {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; ns = &lt;span style="color: maroon;"&gt;&amp;quot;http://tempuri.org&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;SqlDataReader&lt;/span&gt; _reader;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; CustomerStream() { }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; CustomerStream(&lt;span style="color: teal;"&gt;SqlDataReader&lt;/span&gt; reader) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _reader = reader;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; System.Xml.Schema.&lt;span style="color: teal;"&gt;XmlSchema&lt;/span&gt; GetSchema() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; schema = &lt;span style="color: maroon;"&gt;@&amp;quot;&amp;lt;xs:schema id=&amp;quot;&amp;quot;Customer&amp;quot;&amp;quot; targetNamespace=&amp;quot;&amp;quot;http://tempuri.org/Customer.xsd&amp;quot;&amp;quot; elementFormDefault=&amp;quot;&amp;quot;qualified&amp;quot;&amp;quot; xmlns=&amp;quot;&amp;quot;http://tempuri.org/Customer.xsd&amp;quot;&amp;quot; xmlns:mstns=&amp;quot;&amp;quot;http://tempuri.org/Customer.xsd&amp;quot;&amp;quot; xmlns:xs=&amp;quot;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;Customer&amp;quot;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;CustomerID&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;xs:string&amp;quot;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;CompanyName&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;xs:string&amp;quot;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;ContactName&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;xs:string&amp;quot;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;Country&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;xs:string&amp;quot;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name=&amp;quot;&amp;quot;Phone&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;xs:string&amp;quot;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: maroon;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:schema&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;XmlSchema&lt;/span&gt; xs = &lt;span style="color: teal;"&gt;XmlSchema&lt;/span&gt;.Read(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;StringReader&lt;/span&gt;(schema), &lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; xs;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WriteXml(System.Xml.&lt;span style="color: teal;"&gt;XmlWriter&lt;/span&gt; writer) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (_reader == &lt;span style="color: blue;"&gt;null&lt;/span&gt;) &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: maroon;"&gt;&amp;quot;SqlDataReader expected&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (_reader) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (_reader.Read()) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteStartElement(&lt;span style="color: maroon;"&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;, ns);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; fieldIndex = 0; fieldIndex &amp;lt; _reader.FieldCount; fieldIndex++) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteElementString(_reader.GetName(fieldIndex), ns, _reader.GetValue(fieldIndex).ToString());&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteEndElement();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;The next class we&amp;#39;ll want to implement is some sort of custom reader for 
iterating the results. Because this is a dependency of the ReadXml() method 
which we haven&amp;#39;t implemented at this point, we&amp;#39;ll do that first. This is a very 
simplistic design that consists mostly of throwing NotImplementedException (haha), 
but gets the job done for this example and you could certainly extend this 
concept. Basically the custructor takes a file path where the results are stored 
in an XML document and operates similiar to a datareader using GetCustomer().&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 namespace\cf0  StreamService.Common \{\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 CustomerDataReader\cf0  : \cf10 DbDataReader\cf0 , \cf10 IDataReader\cf0 , \cf10 IDisposable\cf0 , \cf10 IDataRecord\cf0  \{\par ??        \cf2 private\cf0  \cf10 Dictionary\cf0 &amp;lt;\cf2 int\cf0 , \cf2 string\cf0 &amp;gt; _ordinals;\par ??        \cf2 private\cf0  \cf10 XmlNodeList\cf0  _nodes;\par ??        \cf2 private\cf0  \cf10 XmlDocument\cf0  _document;\par ??        \cf2 private\cf0  \cf10 Customer\cf0  _current;\par ??        \cf2 private\cf0  \cf2 int\cf0  _count;\par ??\par ??        \cf2 public\cf0  CustomerDataReader(\cf2 string\cf0  path) \{\par ??            _document = \cf2 new\cf0  \cf10 XmlDocument\cf0 ();\par ??            _document.Load(path);\par ??            _nodes = _document.SelectNodes(\cf13 "//Customers/*"\cf0 );\par ??\par ??            _ordinals = \cf2 new\cf0  \cf10 Dictionary\cf0 &amp;lt;\cf2 int\cf0 , \cf2 string\cf0 &amp;gt;();\par ??            _ordinals.Add(0, \cf13 "CustomerID"\cf0 );\par ??            _ordinals.Add(1, \cf13 "CompanyName"\cf0 );\par ??            _ordinals.Add(2, \cf13 "ContactName"\cf0 );\par ??            _ordinals.Add(3, \cf13 "Country"\cf0 );\par ??            _ordinals.Add(4, \cf13 "Phone"\cf0 );\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 override\cf0  \cf2 int\cf0  GetOrdinal(\cf2 string\cf0  name) \{\par ??            \cf2 foreach\cf0  (\cf10 KeyValuePair\cf0 &amp;lt;\cf2 int\cf0 , \cf2 string\cf0 &amp;gt; entry \cf2 in\cf0  _ordinals) \{\par ??                \cf2 if\cf0  (entry.Value == name) \cf2 return\cf0  entry.Key;\par ??            \}\par ??            \cf2 throw\cf0  \cf2 new\cf0  \cf10 ArgumentException\cf0 (\cf13 "Name does not exist."\cf0 );\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 override\cf0  \cf2 bool\cf0  Read() \{\par ??            \cf2 if\cf0  (_count &amp;lt; _nodes.Count) \{\par ??                \cf10 XmlNode\cf0  currentNode = _nodes[_count++];\par ??\par ??                _current = \cf2 new\cf0  \cf10 Customer\cf0 ();\par ??                \cf2 foreach\cf0  (\cf10 XmlNode\cf0  child \cf2 in\cf0  currentNode.ChildNodes) \{\par ??                    \cf2 typeof\cf0 (\cf10 Customer\cf0 ).GetProperty(child.Name).SetValue(_current, child.InnerText, \cf2 null\cf0 );\par ??                \}\par ??                \cf2 return\cf0  \cf2 true\cf0 ;\par ??            \}\par ??            \cf2 return\cf0  \cf2 false\cf0 ;\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf10 Customer\cf0  GetCustomer() \{\par ??            \cf2 return\cf0  _current;\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 override\cf0  \cf2 void\cf0  Close() \{\par ??            \cf11 // ...\par ??\cf0         \}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; StreamService.Common {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerDataReader&lt;/span&gt; : &lt;span style="color: teal;"&gt;DbDataReader&lt;/span&gt;, &lt;span style="color: teal;"&gt;IDataReader&lt;/span&gt;, &lt;span style="color: teal;"&gt;IDisposable&lt;/span&gt;, &lt;span style="color: teal;"&gt;IDataRecord&lt;/span&gt; {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; _ordinals;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;XmlNodeList&lt;/span&gt; _nodes;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;XmlDocument&lt;/span&gt; _document;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;Customer&lt;/span&gt; _current;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; _count;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; CustomerDataReader(&lt;span style="color: blue;"&gt;string&lt;/span&gt; path) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _document = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;XmlDocument&lt;/span&gt;();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _document.Load(path);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _nodes = _document.SelectNodes(&lt;span style="color: maroon;"&gt;&amp;quot;//Customers/*&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals.Add(0, &lt;span style="color: maroon;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals.Add(1, &lt;span style="color: maroon;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals.Add(2, &lt;span style="color: maroon;"&gt;&amp;quot;ContactName&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals.Add(3, &lt;span style="color: maroon;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ordinals.Add(4, &lt;span style="color: maroon;"&gt;&amp;quot;Phone&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; GetOrdinal(&lt;span style="color: blue;"&gt;string&lt;/span&gt; name) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; entry &lt;span style="color: blue;"&gt;in&lt;/span&gt; _ordinals) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (entry.Value == name) &lt;span style="color: blue;"&gt;return&lt;/span&gt; entry.Key;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: maroon;"&gt;&amp;quot;Name does not exist.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; Read() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (_count &amp;lt; _nodes.Count) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;XmlNode&lt;/span&gt; currentNode = _nodes[_count++];&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _current = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Customer&lt;/span&gt;();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;XmlNode&lt;/span&gt; child &lt;span style="color: blue;"&gt;in&lt;/span&gt; currentNode.ChildNodes) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: teal;"&gt;Customer&lt;/span&gt;).GetProperty(child.Name).SetValue(_current, child.InnerText, &lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: teal;"&gt;Customer&lt;/span&gt; GetCustomer() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; _current;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Close() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// ...&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf11 // rest of the methods throw not implemented exceptions\par ??\cf0     \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;        // NOTE: rest of the methods throw not implemented exceptions&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;Now we are set to implement the ReadXml() method that is missing from our 
CustomerStream class as well as a method that allows the calling client to 
implement our custom datareader class...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf11 //CustomerStream class methods...}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;//CustomerStream class methods...
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 public\cf0  \cf10 CustomerDataReader\cf0  ExecuteCustomerDataReader() \{\par ??    \cf10 CustomerDataReader\cf0  reader = \cf2 new\cf0  \cf10 CustomerDataReader\cf0 (\cf10 Environment\cf0 .CurrentDirectory + \cf13 "\\\\Customers.xml"\cf0 );\par ??    \cf2 return\cf0  reader;\par ??\}\par ??\par ??\cf2 public\cf0  \cf2 void\cf0  ReadXml(System.Xml.\cf10 XmlReader\cf0  reader) \{\par ??    \cf2 using\cf0  (\cf10 XmlTextWriter\cf0  xwriter = \cf2 new\cf0  \cf10 XmlTextWriter\cf0 (\cf10 Environment\cf0 .CurrentDirectory + \cf13 "\\\\Customers.xml"\cf0 , \cf10 Encoding\cf0 .UTF8)) \{\par ??        xwriter.WriteRaw(\cf13 @"&amp;lt;?xml version=""1.0"" encoding=""utf-8""?&amp;gt;"\cf0 );\par ??        xwriter.WriteStartElement(\cf13 "Customers"\cf0 );\par ??\par ??        \cf2 while\cf0  (reader.Read()) \{\par ??            \cf2 if\cf0  (reader.LocalName == \cf13 "Customer"\cf0 ) \{\par ??                xwriter.WriteStartElement(\cf13 "Customer"\cf0 );\par ??                reader.ReadStartElement();\par ??\par ??                \cf2 while\cf0  (reader.NodeType != \cf10 XmlNodeType\cf0 .EndElement) \{\par ??                    xwriter.WriteElementString(reader.LocalName, reader.ReadElementString());\par ??                \}\par ??                xwriter.WriteEndElement();\par ??            \}\par ??        \}\par ??        xwriter.WriteEndElement();\par ??    \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerDataReader&lt;/span&gt; ExecuteCustomerDataReader() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;CustomerDataReader&lt;/span&gt; reader = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerDataReader&lt;/span&gt;(&lt;span style="color: teal;"&gt;Environment&lt;/span&gt;.CurrentDirectory + &lt;span style="color: maroon;"&gt;&amp;quot;\\Customers.xml&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; reader;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ReadXml(System.Xml.&lt;span style="color: teal;"&gt;XmlReader&lt;/span&gt; reader) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: teal;"&gt;XmlTextWriter&lt;/span&gt; xwriter = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;XmlTextWriter&lt;/span&gt;(&lt;span style="color: teal;"&gt;Environment&lt;/span&gt;.CurrentDirectory + &lt;span style="color: maroon;"&gt;&amp;quot;\\Customers.xml&amp;quot;&lt;/span&gt;, &lt;span style="color: teal;"&gt;Encoding&lt;/span&gt;.UTF8)) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteRaw(&lt;span style="color: maroon;"&gt;@&amp;quot;&amp;lt;?xml version=&amp;quot;&amp;quot;1.0&amp;quot;&amp;quot; encoding=&amp;quot;&amp;quot;utf-8&amp;quot;&amp;quot;?&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteStartElement(&lt;span style="color: maroon;"&gt;&amp;quot;Customers&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (reader.Read()) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (reader.LocalName == &lt;span style="color: maroon;"&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteStartElement(&lt;span style="color: maroon;"&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; reader.ReadStartElement();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (reader.NodeType != &lt;span style="color: teal;"&gt;XmlNodeType&lt;/span&gt;.EndElement) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteElementString(reader.LocalName, reader.ReadElementString());&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteEndElement();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.WriteEndElement();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;Since our custom datareader class exposes a class type named Customer, here 
is the code for that...&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 namespace\cf0  StreamService.Common \{\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 Customer\cf0  \{\par ??        \cf2 private\cf0  \cf2 string\cf0  _phone;\par ??        \cf2 private\cf0  \cf2 string\cf0  _country;\par ??        \cf2 private\cf0  \cf2 string\cf0  _contactName;\par ??        \cf2 private\cf0  \cf2 string\cf0  _companyName;\par ??        \cf2 private\cf0  \cf2 string\cf0  _customerID;\par ??\par ??        \cf2 public\cf0  Customer() \{ \}\par ??\par ??        \cf2 public\cf0  Customer(\cf2 string\cf0  customerID, \cf2 string\cf0  companyName, \cf2 string\cf0  contactName, \cf2 string\cf0  country, \cf2 string\cf0  phone) \{\par ??            _customerID = customerID;\par ??            _companyName = companyName;\par ??            _contactName = contactName;\par ??            _country = country;\par ??            _phone = phone;\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 string\cf0  CustomerID \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _customerID; \}\par ??            \cf2 set\cf0  \{ _customerID = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 string\cf0  CompanyName \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _companyName; \}\par ??            \cf2 set\cf0  \{ _companyName = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 string\cf0  ContactName \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _contactName; \}\par ??            \cf2 set\cf0  \{ _contactName = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 string\cf0  Country \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _country; \}\par ??            \cf2 set\cf0  \{ _country = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        \cf2 public\cf0  \cf2 string\cf0  Phone \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _phone; \}\par ??            \cf2 set\cf0  \{ _phone = \cf2 value\cf0 ; \}\par ??        \}\par ??    \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; StreamService.Common {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;Customer&lt;/span&gt; {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _phone;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _country;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _contactName;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _companyName;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _customerID;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Customer() { }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Customer(&lt;span style="color: blue;"&gt;string&lt;/span&gt; customerID, &lt;span style="color: blue;"&gt;string&lt;/span&gt; companyName, &lt;span style="color: blue;"&gt;string&lt;/span&gt; contactName, &lt;span style="color: blue;"&gt;string&lt;/span&gt; country, &lt;span style="color: blue;"&gt;string&lt;/span&gt; phone) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _customerID = customerID;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _companyName = companyName;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _contactName = contactName;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _country = country;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _phone = phone;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; CustomerID {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _customerID; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _customerID = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; CompanyName {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _companyName; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _companyName = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; ContactName {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _contactName; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _contactName = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Country {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _country; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _country = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Phone {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _phone; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt; { _phone = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;The next step is to write our Web Service. This is very straight forward - 
all we have to do is turn off buffering and create a SqlDataReader to query the 
Customers table in the Northwind database. Note that the responsibility for 
closing the SqlDataReader and the SqlConnection lies within the CustomerStream 
class. This is so that we do not get disconnected after the GetCustomers 
WebMethod finishes executing and we are within the context of the server 
streaming down the data chunks (customer records) to the client...&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 namespace\cf0  StreamService.Server \{\par ??    [\cf10 WebService\cf0 (Namespace = \cf13 "http://tempuri.org/"\cf0 )]\par ??    [\cf10 WebServiceBinding\cf0 (ConformsTo = \cf10 WsiProfiles\cf0 .BasicProfile1_1)]\par ??    [System.ComponentModel.\cf10 DesignerCategory\cf0 (\cf13 "Code"\cf0 )]\par ??    [\cf10 ToolboxItem\cf0 (\cf2 false\cf0 )]\par ??\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 TheWebService\cf0  : System.Web.Services.\cf10 WebService\cf0  \{\par ??        [\cf10 WebMethod\cf0 ]\par ??        \cf2 public\cf0  \cf10 CustomerStream\cf0  GetCustomers() \{\par ??            \cf11 //turn off buffering\par ??\cf0             \cf10 HttpContext\cf0 .Current.Response.Buffer = \cf2 false\cf0 ;\par ??\par ??            \cf11 //do *not* dispose of connection or datareader - our CustomerStream class does this\par ??\cf0             \cf10 SqlConnection\cf0  connection = \cf2 new\cf0  \cf10 SqlConnection\cf0 (\cf10 WebConfigurationManager\cf0 .ConnectionStrings[\cf13 "Northwind"\cf0 ].ConnectionString);\par ??            \cf2 using\cf0  (\cf10 SqlCommand\cf0  command = \cf2 new\cf0  \cf10 SqlCommand\cf0 (\cf13 "SELECT CustomerID, CompanyName, ContactName, Country, Phone FROM Customers"\cf0 , connection)) \{\par ??                connection.Open();\par ??                \cf10 SqlDataReader\cf0  reader = command.ExecuteReader(\cf10 CommandBehavior\cf0 .CloseConnection);\par ??                \cf10 CustomerStream\cf0  stream = \cf2 new\cf0  \cf10 CustomerStream\cf0 (reader);\par ??                \cf2 return\cf0  stream;\par ??            \}\par ??        \}\par ??    \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; StreamService.Server {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal;"&gt;WebService&lt;/span&gt;(Namespace = &lt;span style="color: maroon;"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal;"&gt;WebServiceBinding&lt;/span&gt;(ConformsTo = &lt;span style="color: teal;"&gt;WsiProfiles&lt;/span&gt;.BasicProfile1_1)]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.ComponentModel.&lt;span style="color: teal;"&gt;DesignerCategory&lt;/span&gt;(&lt;span style="color: maroon;"&gt;&amp;quot;Code&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal;"&gt;ToolboxItem&lt;/span&gt;(&lt;span style="color: blue;"&gt;false&lt;/span&gt;)]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;TheWebService&lt;/span&gt; : System.Web.Services.&lt;span style="color: teal;"&gt;WebService&lt;/span&gt; {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal;"&gt;WebMethod&lt;/span&gt;]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerStream&lt;/span&gt; GetCustomers() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//turn off buffering&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;HttpContext&lt;/span&gt;.Current.Response.Buffer = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//do *not* dispose of connection or datareader - our CustomerStream class does this&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;SqlConnection&lt;/span&gt; connection = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;SqlConnection&lt;/span&gt;(&lt;span style="color: teal;"&gt;WebConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: maroon;"&gt;&amp;quot;Northwind&amp;quot;&lt;/span&gt;].ConnectionString);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: teal;"&gt;SqlCommand&lt;/span&gt; command = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;SqlCommand&lt;/span&gt;(&lt;span style="color: maroon;"&gt;&amp;quot;SELECT CustomerID, CompanyName, ContactName, Country, Phone FROM Customers&amp;quot;&lt;/span&gt;, connection)) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; connection.Open();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;SqlDataReader&lt;/span&gt; reader = command.ExecuteReader(&lt;span style="color: teal;"&gt;CommandBehavior&lt;/span&gt;.CloseConnection);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;CustomerStream&lt;/span&gt; stream = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;CustomerStream&lt;/span&gt;(reader);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; stream;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;Next, we need to create a client application to call the Web Service...&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 namespace\cf0  StreamService.Client \{\par ??    \cf2 class\cf0  \cf10 Program\cf0  \{\par ??        \cf2 static\cf0  \cf2 void\cf0  Main(\cf2 string\cf0 [] args) \{\par ??            \cf10 TheWebService\cf0  ws = \cf2 new\cf0  \cf10 TheWebService\cf0 ();\par ??            \cf10 CustomerStream\cf0  stream = ws.GetCustomers();\par ??\par ??            \cf10 XmlSerializer\cf0  ser = \cf2 new\cf0  \cf10 XmlSerializer\cf0 (\cf2 typeof\cf0 (\cf10 Customer\cf0 ));\par ??\par ??            \cf2 using\cf0 (\cf10 CustomerDataReader\cf0  reader = stream.ExecuteCustomerDataReader())\{\par ??                \cf2 while\cf0  (reader.Read()) \{\par ??                    \cf10 Customer\cf0  customer = reader.GetCustomer();\par ??                    ser.Serialize(\cf10 Console\cf0 .Out, customer);\par ??                \}\par ??            \}\par ??        \}\par ??    \}\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; StreamService.Client {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;Program&lt;/span&gt; {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;TheWebService&lt;/span&gt; ws = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;TheWebService&lt;/span&gt;();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;CustomerStream&lt;/span&gt; stream = ws.GetCustomers();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;XmlSerializer&lt;/span&gt; ser = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: teal;"&gt;Customer&lt;/span&gt;));&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt;(&lt;span style="color: teal;"&gt;CustomerDataReader&lt;/span&gt; reader = stream.ExecuteCustomerDataReader()){&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (reader.Read()) {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Customer&lt;/span&gt; customer = reader.GetCustomer();&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ser.Serialize(&lt;span style="color: teal;"&gt;Console&lt;/span&gt;.Out, customer);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;Lastly, we&amp;#39;ll need to make a small tweak to the client&amp;#39;s Reference.cs code 
(our proxy class generated by Visual Studio when we reference the Web Service) 
so that the type casted and returned is a CustomerStream object..&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf15 ///\cf11  \cf15 &amp;lt;remarks/&amp;gt;\par ??\cf0 [System.Web.Services.Protocols.\cf10 SoapDocumentMethodAttribute\cf0 (\cf13 "http://tempuri.org/GetCustomers"\cf0 , RequestNamespace=\cf13 "http://tempuri.org/"\cf0 , ResponseNamespace=\cf13 "http://tempuri.org/"\cf0 , Use=System.Web.Services.Description.\cf10 SoapBindingUse\cf0 .Literal, ParameterStyle=System.Web.Services.Protocols.\cf10 SoapParameterStyle\cf0 .Wrapped)]\par ??\cf2 public\cf0  \cf10 CustomerStream\cf0  GetCustomers() \{\par ??    \cf2 object\cf0 [] results = \cf2 this\cf0 .Invoke(\cf13 "GetCustomers"\cf0 , \cf2 new\cf0  \cf2 object\cf0 [0]);\par ??    \cf2 return\cf0  ((\cf10 CustomerStream\cf0 )(results[0]));\par ??\}}
--&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white"&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;remarks/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;[System.Web.Services.Protocols.&lt;span style="color: teal;"&gt;SoapDocumentMethodAttribute&lt;/span&gt;(&lt;span style="color: maroon;"&gt;&amp;quot;http://tempuri.org/GetCustomers&amp;quot;&lt;/span&gt;, RequestNamespace=&lt;span style="color: maroon;"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;, ResponseNamespace=&lt;span style="color: maroon;"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;, Use=System.Web.Services.Description.&lt;span style="color: teal;"&gt;SoapBindingUse&lt;/span&gt;.Literal, ParameterStyle=System.Web.Services.Protocols.&lt;span style="color: teal;"&gt;SoapParameterStyle&lt;/span&gt;.Wrapped)]&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: teal; font-weight: 700"&gt;CustomerStream&lt;/span&gt; GetCustomers() {&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;object&lt;/span&gt;[] results = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Invoke(&lt;span style="color: maroon;"&gt;&amp;quot;GetCustomers&amp;quot;&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;[0]);&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; ((&lt;span style="color: teal; font-weight: 700"&gt;CustomerStream&lt;/span&gt;)(results[0]));&lt;/pre&gt;
 &lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;I hope you found this interesting and informative. Merry Christmas, Happy 
Holidays, etc!&lt;/p&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1549.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Using / Dispose</title><link>http://unboxedsolutions.com/sean/archive/2006/12/14/1544.aspx</link><pubDate>Thu, 14 Dec 2006 12:56:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2006/12/14/1544.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1544.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2006/12/14/1544.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1544.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1544.aspx</trackback:ping><description>&lt;P&gt;Did you know that you can wrap a variable in a using statement without having to set its reference? Someone showed me this today and it of course makes sense, I've just never tried it before and have never seen anyone do it in examples or otherwise...&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;//datareader variable&lt;BR&gt;using (_reader) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (_reader.Read()) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteStartElement("Customer", ns);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int fieldIndex = 0; fieldIndex &amp;lt; _reader.FieldCount; fieldIndex++) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteElementString(_reader.GetName(fieldIndex), ns, _reader.GetValue(fieldIndex).ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.WriteEndElement();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I learned something new today, guess I get to go home.&amp;nbsp; :-)&amp;nbsp;&lt;/P&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1544.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Bjarne Stroustrup Quotes</title><link>http://unboxedsolutions.com/sean/archive/2006/12/12/1542.aspx</link><pubDate>Tue, 12 Dec 2006 06:08:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2006/12/12/1542.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1542.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2006/12/12/1542.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1542.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1542.aspx</trackback:ping><description>&lt;P&gt;&lt;EM&gt;I think the real problem is that "we" (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. &lt;STRONG&gt;We perform many minor miracles through trial and error, excessive use of brute force&lt;/STRONG&gt;, and lots and lots of testing, but--so often--it's not enough.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Software developers have become adept at the difficult art of building reasonably reliable systems out of unreliable parts. The snag is that often we do not know exactly how we did it: &lt;STRONG&gt;a system just "sort of evolved" into something minimally acceptable&lt;/STRONG&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We wouldn't tolerate plumbers or accountants that poorly educated.&lt;/STRONG&gt; We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, &lt;STRONG&gt;too many software developers are undereducated and undertrained&lt;/STRONG&gt;.&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;&lt;A target="_blank" href="http://www.technologyreview.com/InfoTech/17868/page2/"&gt;http://www.technologyreview.com/InfoTech/17868/page2/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1542.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Sean Chase</dc:creator><title>Helpful Sarcasm</title><link>http://unboxedsolutions.com/sean/archive/2006/12/06/1454.aspx</link><pubDate>Wed, 06 Dec 2006 13:32:00 GMT</pubDate><guid>http://unboxedsolutions.com/sean/archive/2006/12/06/1454.aspx</guid><wfw:comment>http://unboxedsolutions.com/sean/comments/1454.aspx</wfw:comment><comments>http://unboxedsolutions.com/sean/archive/2006/12/06/1454.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://unboxedsolutions.com/sean/comments/commentRss/1454.aspx</wfw:commentRss><trackback:ping>http://unboxedsolutions.com/sean/services/trackbacks/1454.aspx</trackback:ping><description>&lt;A target="_blank" href="http://blogs.msdn.com/ericgu/archive/2006/12/05/the-siren-song-of-reuse.aspx"&gt;This is choice.&lt;/A&gt;&amp;nbsp; :-)&lt;img src ="http://unboxedsolutions.com/sean/aggbug/1454.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>