<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>Pluralsight Blogs</title><link>http://www.pluralsight.com/blogs/mainfeed.aspx</link><description>Pluralsight-hosted blogs</description><generator>.Text Version 0.95.2004.102</generator><item><title>DataContracts and object references</title><link>http://pluralsight.com/blogs/aaron/archive/2008/05/14/50943.aspx</link><pubDate>Wed, 14 May 2008 17:44:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/aaron/archive/2008/05/14/50943.aspx</guid><wfw:comment>http://pluralsight.com/blogs/aaron/comments/50943.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/aaron/comments/commentRss/50943.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/aaron/archive/2008/05/14/50943.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/aaron/services/trackbacks/50943.aspx</trackback:ping><source url="http://pluralsight.com/blogs/aaron/rss.aspx">Service Station, by Aaron Skonnard</source><description>&lt;P&gt;Another new WCF feature that's part of .NET 3.5 SP1 has to do with better support for object references. DataContractSerializer has always supported serializing object references and dealing with graphs, including cycles, and not just simple trees. But&amp;nbsp;doing so is not the default behavior -- you have to tell DataContractSerializer that you want it to preserve object references when you instantiate it.&lt;/P&gt;
&lt;P&gt;Let's look at a simple example. Supposed that you have the following cyclic object graph (I'm assuming the same Person type that I used in my &lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/05/13/50934.aspx"&gt;previous post&lt;/A&gt;):&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; p = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Id = &lt;SPAN style="COLOR: #a31515"&gt;"123"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Aaron"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Id = &lt;SPAN style="COLOR: #a31515"&gt;"456"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Monica"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Spouse = p;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And now let's supposed that you want to serialize it. If you create the DataContractSerializer using the default constructor, it will throw an exception when it identifies the cycle during serialization. However, you can tell DataContractSerializer to preserve object references using one of the other constructors:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DataContractSerializer&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; dcs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;.MaxValue, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt; &lt;SPAN style="COLOR: green"&gt;/* preserve object refs */&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt; fs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"person.xml"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;FileMode&lt;/SPAN&gt;.Create))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dcs.WriteObject(fs, p);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The resulting person.xml file now looks like this:&lt;/P&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:z&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/2003/10/Serialization/&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;2&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;123&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;3&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Aaron&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;4&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;5&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;456&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;6&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Monica&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Ref&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;i:nil&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Notice that each reference type has been given an &amp;#8220;Id&amp;#8221; attribute and the nested Spouse reference refers back to the containing Person via the Ref attribute, thereby preserving the references within the XML.&lt;/P&gt;
&lt;P&gt;Now, as of SP1, the definitions for the Id/Ref attributes are now part of the generated schema. If you run SvcUtil.exe /dconly over the assembly containing Person,&amp;nbsp;it will produce a schema file for the &amp;#8220;http://schemas.microsoft.com/2003/10/Serialization&amp;#8221; namespace. And within that schema, you'll find the following definitions for Id/Ref, which are defined as ID/IDREF types:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xs:attribute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Id&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:ID&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xs:attribute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Ref&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:IDREF&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;ID and IDREF are standard DTD/XSD types that are widely supported across platforms.&lt;/P&gt;
&lt;P&gt;One problem with employing this object-reference-preservation technique is that you don't have direct control over how the DataContractSerializer is constructed when defining your WCF services. You can, however, implement a behavior that intercepts the standard serializer creation process so that you can enable this feature. Sowmy provides a complete example of how to accomplish this &lt;A href="http://blogs.msdn.com/sowmy/archive/2006/03/26/561188.aspx"&gt;over on his blog&lt;/A&gt;.&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/aaron/aggbug/50943.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Aaron Skonnard</dc:creator></item><item><title>DataContracts without attributes (POCO support) in .NET 3.5 SP1</title><link>http://pluralsight.com/blogs/aaron/archive/2008/05/13/50934.aspx</link><pubDate>Tue, 13 May 2008 22:50:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/aaron/archive/2008/05/13/50934.aspx</guid><wfw:comment>http://pluralsight.com/blogs/aaron/comments/50934.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/aaron/comments/commentRss/50934.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/aaron/archive/2008/05/13/50934.aspx#comment</comments><slash:comments>6</slash:comments><trackback:ping>http://pluralsight.com/blogs/aaron/services/trackbacks/50934.aspx</trackback:ping><source url="http://pluralsight.com/blogs/aaron/rss.aspx">Service Station, by Aaron Skonnard</source><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;One of the &lt;/FONT&gt;&lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx"&gt;&lt;FONT face=Calibri&gt;new WCF features in .NET 3.5 SP1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; is that DataContractSerializer now supports serializing types that aren&amp;#8217;t annotated with any serialization attributes like [DataContract] or [Serializable].&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;If you were using DataContractSerializer prior to SP1, you had to follow &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/sowmy/archive/2006/02/22/536747.aspx"&gt;&lt;FONT face=Calibri&gt;the rules outline by Sowmy here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;. These rules illustrate that for custom classes you have a few choices. You can annotate the class with [DataContract] and [DataMember] to define an attribute-based mapping or implement IXmlSerializable to define a custom mapping. Or you can annotate the class with [Serializable] to automatically map all fields (like with .NET Remoting) or implement ISerializable to take things into your own hands (assuming IXmlSerializable wasn't used). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;However, as you can see from &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/sowmy/archive/2006/02/22/536747.aspx"&gt;&lt;FONT face=Calibri&gt;the rules&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;, there is no allowance for types that haven&amp;#8217;t been annotated with one of these serialization attributes or that implement one of the serialization-related interfaces, or in other words, you can't serialize &lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&amp;#8220;plain old C# objects&amp;#8220;&lt;/SPAN&gt;&lt;/EM&gt; (&lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;POCO&lt;/SPAN&gt;&lt;/EM&gt; for short). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The support for [Serializable] provided a nice migration path for traditional .NET Remoting types, which was nice, but the lack of support for POCO types meant you couldn&amp;#8217;t move your ASMX types over to the DataContractSerializer without sprinkling a bunch of new attributes on them. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;With .NET 3.5 SP1 you can serialize any C# object even if it doesn&amp;#8217;t come with any serialization attributes. For example, the following Person type is now serializable by default:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; SerializationSp1&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Id { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; id; } &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { id = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; } }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Name;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; Spouse;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;For POCO types, DataContractSerializer only includes the public read/write fields and properties into the resulting XML Infoset. So in our example above, the private &amp;#8220;id&amp;#8221; field won&amp;#8217;t make it into the message. Also, these types must have a public default (no argument) constructor in order to be serialized. The Person type above works find because the compiler gives us a public default constructor but if you were to add a non-default constructor, it would no longer be serializable using this approach.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;With this new support, you can use virtually any C# type (with a public default constructor) in your WCF service contracts and you don&amp;#8217;t have to worry about changing the serializer back to XmlSerializer using [XmlSerializerFormat]. For example, the following service contract works as-is in .NET 3.5 SP1:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;ServiceContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;interface&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ILookupPerson&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;OperationContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; GetPerson(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Now let&amp;#8217;s take a look at the serialized XML for the Person type shown above. Here&amp;#8217;s a simple console program that uses DataContractSerializer to serialize a Person object:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&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;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; p = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Id = &lt;SPAN style="COLOR: #a31515"&gt;"123"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Aaron"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse.Id = &lt;SPAN style="COLOR: #a31515"&gt;"456"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Monica"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt; dcs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt; fs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"person.xml"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;FileMode&lt;/SPAN&gt;.Create))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&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;dcs.WriteObject(fs, p);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;And here&amp;#8217;s what the resulting person.xml file looks like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;123&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Aaron&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;456&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Monica&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;i:nil&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The mapping algorithm is similar to what&amp;#8217;s used with [DataContract] or [Serializable] &amp;#8211; it uses the type name for the root element name, member names for the local element names, and it orders them alphabetically. It also produces a reasonable XML namespace based on the .NET namespace. The only difference is how it chooses what to put into the message &amp;#8211; in this case it&amp;#8217;s based on the public contract of the type. When you use this approach, you must be happy with the XML that DataContractSerializer gives you. In other words, you can&amp;#8217;t customize the resulting XML in any way. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;As soon as you place the [DataContract] attribute on the class, DataContractSerializer will only include fields/properties annotated with [DataMember] once again. For example, suppose I make the following change to the Person type by annotating it with [DataContract]:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;DataContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Id { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; id; } &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { id = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; } }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Name;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; Spouse;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;If I run my console program again, the resulting person.xml now looks like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Notice that none of the fields were serialized because they weren&amp;#8217;t annotated with [DataMember]. Once I applied [DataContract] to Person, DataContractSerializer no longer treated it like a POCO type. The same would hold true if I annotated the type with [Serializable]. If it finds the [Serializable] attribute, it falls back to the [Serializable] mapping and only includes the fields.&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;To summarize, the new DataContractSerializer provides several different mechanisms for defining the serialization mapping:&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Simply rely on the public interface and take the default XML mapping&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use [Serializable] to only include fields in the mapping&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use [DataContract] and [DataMember] and apply some basic customization&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use IXmlSerializable or ISerializable for advanced mapping customization&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;I was actually surprised to learn that they added this feature because it goes against the main reason for the original [DataContract] design (&amp;#8220;boundaries are explicit&amp;#8221;), at least according to the team in early design reviews. I asked for this feature (an implicit mapping) but my request was dismissed for that very reason. Despite whatever principle it may violate, I like it, because it makes it simpler for folks to get started with WCF and it provides an easier migration path for ASMX.&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/aaron/aggbug/50934.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Aaron Skonnard</dc:creator></item><item><title>WCF features/improvements in .NET 3.5 SP1 &amp; VS 2008 SP1</title><link>http://pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx</link><pubDate>Mon, 12 May 2008 23:00:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx</guid><wfw:comment>http://pluralsight.com/blogs/aaron/comments/50909.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/aaron/comments/commentRss/50909.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/aaron/services/trackbacks/50909.aspx</trackback:ping><source url="http://pluralsight.com/blogs/aaron/rss.aspx">Service Station, by Aaron Skonnard</source><description>&lt;P&gt;&lt;A href="http://weblogs.asp.net/scottgu/default.aspx"&gt;Scott Guthrie&lt;/A&gt; announced the availability of .NET 3.5 SP1 and Visual Studio 2008 SP1 today. If you read &lt;A href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;his entry&lt;/A&gt;, you'll see this release is packed with new features, many of which revolve around the Ajax, MVC, and ADO.NET improvements they've been working on.&lt;/P&gt;
&lt;P&gt;However, this release also contains some new WCF nuggets including the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;New Hosting Wizard for WCF Service projects. 
&lt;LI&gt;Enhancements in Test Client such as support for RM Sessions, Message Contract and Nullable&lt;T&gt; types enables testing of broader set of WCF-based services. 
&lt;LI&gt;Expanding reach of DataContract Serializer by relaxing the need of having [DataContract]/ [DataMember] on types and by supporting an interoperable mechanism for dealing with object references. 
&lt;LI&gt;Improved Partial Trust Debugging Experience with support for Event Log. 
&lt;LI&gt;Support for ADO.NET Entity Framework entities in WCF contracts. 
&lt;LI&gt;Improvements in writing REST based services ranging from easily supporting ServiceDocuments publication and consumption to providing greater control and usability of UriTemplate. 
&lt;LI&gt;Significant performance improvements on large workflow-based projects in Visual Studio. 
&lt;LI&gt;Considerable scalability increases for hosted WCF services in IIS7-integrated mode.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;Update: Steve Maine provides more WCF details &lt;/EM&gt;&lt;A href="http://hyperthink.net/blog/2008/05/12/We+Are+Pleased+To+Bring+You+New+Features+In+NET+35+SP1.aspx"&gt;&lt;EM&gt;in this post&lt;/EM&gt;&lt;/A&gt;&amp;nbsp;&lt;EM&gt;and Omri gives his take &lt;/EM&gt;&lt;A href="https://www.gazitt.com/blog/PermaLink,guid,dd5a7066-d288-48ef-91a8-af895fecbe8c.aspx"&gt;&lt;EM&gt;over here&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;You can read more about this release and grab the bits from &lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;here&lt;/A&gt;.&lt;FONT face=arial size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src ="http://pluralsight.com/blogs/aaron/aggbug/50909.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Aaron Skonnard</dc:creator></item><item><title>Is support coming for BizTalk builds on TFS?</title><link>http://pluralsight.com/blogs/matt/archive/2008/05/12/50905.aspx</link><pubDate>Tue, 13 May 2008 01:54:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/matt/archive/2008/05/12/50905.aspx</guid><wfw:comment>http://pluralsight.com/blogs/matt/comments/50905.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/matt/comments/commentRss/50905.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/matt/archive/2008/05/12/50905.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/matt/services/trackbacks/50905.aspx</trackback:ping><source url="http://pluralsight.com/blogs/matt/rss.aspx">Matt's Musings</source><description>&lt;p&gt;According to Brian Harry[1] , he has been working with the BTS folks to get this put in place.&amp;nbsp; He has been assured that this will be part of the R3[2] release of BizTalk Server that is due out next year.&amp;nbsp; Finally, automated builds for BizTalk without all the hassle, I hope this definitely makes it into the product, as right now it is one more thing that makes people think BizTalk is not for .NET developers.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;[1] &lt;a title="BizTalk Support with TFS" href="http://blogs.msdn.com/bharry/archive/2008/05/12/biztalk-support-with-tfs.aspx"&gt;BizTalk Support with TFS&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[2] &lt;a title="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx" href="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx"&gt;http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/matt/aggbug/50905.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Matt Milner</dc:creator></item><item><title>Not just a service pack (VS 2008 and .NET 3.5 SP 1)</title><link>http://pluralsight.com/blogs/matt/archive/2008/05/12/50904.aspx</link><pubDate>Tue, 13 May 2008 01:50:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/matt/archive/2008/05/12/50904.aspx</guid><wfw:comment>http://pluralsight.com/blogs/matt/comments/50904.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/matt/comments/commentRss/50904.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/matt/archive/2008/05/12/50904.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/matt/services/trackbacks/50904.aspx</trackback:ping><source url="http://pluralsight.com/blogs/matt/rss.aspx">Matt's Musings</source><description>&lt;p&gt;Microsoft has rolled out the beta of SP1 for .NET Framework version 3.5 and Visual Studio 2008.&amp;nbsp; Now don't get confused, this is not just a simple set of bug fixes, this thing is big!&amp;nbsp; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Entity Framework and LINQ to entities&lt;/li&gt; &lt;li&gt;ADO.NET Data Services (formerly project "Astoria")&lt;/li&gt; &lt;li&gt;Dynamic data web sites (highly RAD data driven web sites)&lt;/li&gt; &lt;li&gt;Performance improvements across the board (WCF, WPF, AJAX, debugging, etc.)&lt;/li&gt; &lt;li&gt;New client profile (not quite the slimmed down CLR of silverlight, but gives you a smaller footprint without server technologies you don't need).&amp;nbsp; Now, if they could do the opposite and remove the Windows UI stuff so I could run Windows Server 2008 Server Core with IIS and ASP.NET.&amp;nbsp; &lt;/li&gt; &lt;li&gt;a bunch of perf and usability improvements in VS 2008&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I think the Entity stuff, plus the Dynamic data and data services is a killer combination for many web site developers to get their data modeled and quickly expose an admin tool for data maintenance&amp;nbsp; and service endpoints for interaction.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Check out Soma's blog for some high level details and download links:&lt;a title="Visual Studio 2008 and .NET FX 3.5 SP1 Beta available now" href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx"&gt;Visual Studio 2008 and .NET FX 3.5 SP1 Beta available now&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Scott Gu has details on many of the new features in the IDE and framework: &lt;a title="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Brian Harry has the details on the TFS improvements in the SP: &lt;a title="Team Foundation Server 2008 SP1 Preview" href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx"&gt;Team Foundation Server 2008 SP1 Preview&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;A metric b*#&amp;amp;load of enhancements for a service pack - awesome job folks, I can't wait for the released bits this summer.&amp;nbsp; &lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/matt/aggbug/50904.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Matt Milner</dc:creator></item><item><title>Spaghetti Code Podcast - Connected Systems</title><link>http://pluralsight.com/blogs/matt/archive/2008/05/12/50902.aspx</link><pubDate>Mon, 12 May 2008 23:56:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/matt/archive/2008/05/12/50902.aspx</guid><wfw:comment>http://pluralsight.com/blogs/matt/comments/50902.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/matt/comments/commentRss/50902.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/matt/archive/2008/05/12/50902.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/matt/services/trackbacks/50902.aspx</trackback:ping><source url="http://pluralsight.com/blogs/matt/rss.aspx">Matt's Musings</source><description>&lt;p&gt;I got a chance a few weeks ago to sit down with Jeff Brand at the local Microsoft office and talk about something I love - Connected Systems.&amp;nbsp; We discussed Workflow and Biztalk, WCF and web services and how it all fits together.&amp;nbsp; Jeff is fun to talk to and does a good job of asking questions that developers are interested in.&amp;nbsp; The issues most developers face when building connected systems and trying to pick technologies were especially fun to discuss.&amp;nbsp; If you are interested, check out the audio - &lt;a title="http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx" href="http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx"&gt;http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;You can also check out some of his other podcasts with more Minneapolis folks on a range of topics: &lt;a title="http://www.slickthought.net/category/SpaghettiCode.aspx" href="http://www.slickthought.net/category/SpaghettiCode.aspx"&gt;http://www.slickthought.net/category/SpaghettiCode.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;Matt&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/matt/aggbug/50902.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Matt Milner</dc:creator></item><item><title>WCF Strategies for Windows Mobile Webcast</title><link>http://pluralsight.com/blogs/jimw/archive/2008/05/11/50892.aspx</link><pubDate>Sun, 11 May 2008 15:27:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/jimw/archive/2008/05/11/50892.aspx</guid><wfw:comment>http://pluralsight.com/blogs/jimw/comments/50892.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/jimw/comments/commentRss/50892.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/jimw/archive/2008/05/11/50892.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://pluralsight.com/blogs/jimw/services/trackbacks/50892.aspx</trackback:ping><source url="http://pluralsight.com/blogs/jimw/rss.aspx">You Can Take it With You</source><description>&lt;p&gt;Due to a last minute scheduling problem, my planned appearance on &lt;a href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/a&gt; last week to talk about Windows Communications Foundation (WCF) Strategies for Windows Mobile had to be rescheduled. 
&lt;/p&gt;&lt;p&gt;I realize it's a bit of short notice but I wanted to let everyone know that it is now scheduled for Monday 12-May at 12-noon PDT (3PM EDT, 19:00 UTC). The &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032376632&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;URL to register for the webcast&lt;/a&gt; is still the same.
&lt;/p&gt;&lt;p&gt;I really encourage you to come by and checkout this webcast. Although, our initial point of reference is WCF on Windows Mobile, most of what we talk about applies equally to all mobile-oriented applications whether running on a Windows Mobile device, or laptop/notebook computer. 
&lt;/p&gt;&lt;p&gt;One of the key areas we'll address is the Store and Forward transport and its usefulness in applications that may be intermittently online or that may switch between wired, wireless, or cellular networks.
&lt;/p&gt;&lt;p&gt;Remember that &lt;a href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/a&gt; webcasts are more interactive than most, allowing an opportunity for you to ask questions and for us to share a very interactive dialog. As always though, I'll be showing some demos so that you can see some real code at work.
&lt;/p&gt;&lt;p&gt;I hope to see you there. If you're not yet doing mobile application development, you almost definitely will be doing so very soon and this is a great way to learn about some of the common considerations and solutions for communicating in this loosely-connected environment.&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/jimw/aggbug/50892.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Jim Wilson</dc:creator></item><item><title>Fowler's DSL Book</title><link>http://pluralsight.com/blogs/dbox/archive/2008/05/03/50832.aspx</link><pubDate>Sat, 03 May 2008 19:17:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/dbox/archive/2008/05/03/50832.aspx</guid><wfw:comment>http://pluralsight.com/blogs/dbox/comments/50832.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/dbox/comments/commentRss/50832.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/dbox/archive/2008/05/03/50832.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://pluralsight.com/blogs/dbox/services/trackbacks/50832.aspx</trackback:ping><source url="http://pluralsight.com/blogs/dbox/rss.aspx">Don Box's Spoutlet</source><description>&lt;P&gt;I talked to Neal Ford a week or two ago and he mentioned that Martin Fowler is working on a DSL book.&lt;/P&gt;
&lt;P&gt;Just found the site &lt;A href="http://martinfowler.com/dslwip/"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Pretty skeletal so far, but I think the underlying ideas are pretty spot on.&lt;/P&gt;
&lt;P&gt;Can't wait to see the final manuscript!&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/dbox/aggbug/50832.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Don Box</dc:creator></item><item><title>Steve Yegge on Emacs</title><link>http://pluralsight.com/blogs/dbox/archive/2008/05/03/50831.aspx</link><pubDate>Sat, 03 May 2008 19:06:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/dbox/archive/2008/05/03/50831.aspx</guid><wfw:comment>http://pluralsight.com/blogs/dbox/comments/50831.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/dbox/comments/commentRss/50831.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/dbox/archive/2008/05/03/50831.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://pluralsight.com/blogs/dbox/services/trackbacks/50831.aspx</trackback:ping><source url="http://pluralsight.com/blogs/dbox/rss.aspx">Don Box's Spoutlet</source><description>&lt;P&gt;Via &lt;A href="http://www.innoq.com/blog/st/2008/04/steve_yegge_on_xemacs.html"&gt;Stefan Tilkov&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://steve-yegge.blogspot.com/2008/04/xemacs-is-dead-long-live-xemacs.html"&gt;http://steve-yegge.blogspot.com/2008/04/xemacs-is-dead-long-live-xemacs.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I've got no opinion on the GNU-vs-XEmacs analysis. I never used XEmacs for more than a day. I stopped using GNU Emacs in November 2003.&amp;nbsp;I'm sure both version of emacs are even gotten better over the past 4+ years.&lt;/P&gt;
&lt;P&gt;Had this just been another installment in the GNU-vs-XEmacs soap opera, there'd be nothing to see here.&lt;/P&gt;
&lt;P&gt;Sandwiched between this however are some observations that I think are relevant to anyone who writes programs (start&amp;nbsp;reading from &amp;#8220;the dubious future of emacs&amp;#8220;).&lt;/P&gt;
&lt;P&gt;It's hard to argue with the value of self-hosting.&lt;/P&gt;
&lt;P&gt;It's even harder to argue with the momentum of the browser and dynamic environments.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/dbox/aggbug/50831.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Don Box</dc:creator></item><item><title>MSDN Updates</title><link>http://pluralsight.com/blogs/craig/archive/2008/04/30/50814.aspx</link><pubDate>Wed, 30 Apr 2008 20:00:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/craig/archive/2008/04/30/50814.aspx</guid><wfw:comment>http://pluralsight.com/blogs/craig/comments/50814.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/craig/comments/commentRss/50814.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/craig/archive/2008/04/30/50814.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://pluralsight.com/blogs/craig/services/trackbacks/50814.aspx</trackback:ping><source url="http://pluralsight.com/blogs/craig/rss.aspx">CraigBlog</source><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Yesterday was a big day for me with respect to MSDN. There were a pair of "the new replaces the old" moments. &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;The first event was the one Larry Jordan amusingly subtitles "&lt;a href="http://blogs.msdn.com/innovation/archive/2008/04/29/msdn-highlander-there-will-be-only-one.aspx"&gt;There will be only one!&lt;/a&gt;" What happened was, the old MSDN finally got turned off - the MTPS-based version of MSDN is now the only version running. &lt;a href="http://msdn2.microsoft.com"&gt;http://msdn2.microsoft.com&lt;/a&gt; now redirects to &lt;a href="http://msdn.microsoft.com"&gt;http://msdn.microsoft.com&lt;/a&gt;. That means no more fun URLs like &lt;a title="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/fileassociations/fileassoc.asp" href="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/fileassociations/fileassoc.asp"&gt;&lt;font face="Verdana"&gt;https://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/fileassociations/fileassoc.asp&lt;/font&gt;&lt;/a&gt;. Now it's &lt;a title="http://msdn2.microsoft.com/en-us/library/bb776847.aspx" href="http://msdn2.microsoft.com/en-us/library/bb776847.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb776847.aspx&lt;/a&gt;. Ahh - that's better. &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Since I helped write the Microsoft/TechNet Publishing System (MTPS), which sits behind the new, one-and-only MSDN website (and the TechNet and Expression websites, for that matter), it was sort of cool to see it "take over". &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;The other thing we did yesterday was to update &lt;a href="http://www.pluralsight.com/blogs/craig/archive/2008/01/23/50030.aspx"&gt;the MTPS REST API&lt;/a&gt;. It's still very much a prototype (i.e. things are broken) but we wanted to push a version out there that has some of our latest thinking in it. Most notably, this release sketches out what we think we want to do for writes. That's right - we intend to support community-authored changes to MSDN (the website supports that now in the form of tags and wiki-like annotations, in case you didn't know). &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Although I should point out that the writes aren't implemented yet in the REST API because we haven't fleshed out the story for authentication.  But you can see the idea. For example, to add a new tag to an item you'll be able to PUT to &lt;a href="http://labs.msdn.microsoft.com/restapi/content/b8a5e1s5/en-us;vs.90/tags/add-tag"&gt;http://labs.msdn.microsoft.com/restapi/content/b8a5e1s5/en-us;vs.90/tags/add-tag&lt;/a&gt;. And to delete a the foo tag added by user candera you'd DELETE &lt;a href="http://labs.msdn.microsoft.com/restapi/content/b8a5e1s5/en-us;vs.90/tags/foo/users/candera"&gt;http://labs.msdn.microsoft.com/restapi/content/b8a5e1s5/en-us;vs.90/tags/foo/users/candera&lt;/a&gt;. For convenience, we're also planning to support POST to those endpoints with a hidden form parameter of _method, which is set to PUT or DELETE as appropriate. It's just too convenient to be able to drive the service from a browser during development not to do that. &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Another big change is what lives at &lt;a href="http://labs.msdn.microsoft.com/restapi/content"&gt;~/content&lt;/a&gt;. In this release it's a link to the &lt;a href="http://labs.msdn.microsoft.com/restapi/sites"&gt;~/sites&lt;/a&gt; part of the API. In MTPS parlance, a "site" is the host part of a URL (e.g. the "msdn" in &lt;a href="http://msdn.microsoft.com"&gt;http://msdn.microsoft.com&lt;/a&gt;). Underneath those are "iroots", which is a lot like a vdir (e.g. the "academic" in &lt;a href="http://msdn.microsoft.com/academic"&gt;http://msdn.microsoft.com/academic&lt;/a&gt;). The reason ~/content links to ~/sites is that via ~/sites you can find your way into the TOC tree of any of the content in MTPS…or at least you could if it were hooked up properly everywhere. Still, you can see the idea. &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;That said, we've decided that the link to ~/sites is ugly and we hate it. :) So we'll have to figure something else out there. Maybe a set of virtual TOC nodes that unifies all the TOCs - one node to bring them all and in the API bind them. Or something - we're still noodling on that one. &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;/div&gt;
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Other changes: we've added ETags and Expires headers to all resources (currently everything is hardcoded to expire 24 hours in the future), fixed some of the encoding problems, added an XHTML DTD where appropriate, and of course there are the obligatory bunch of minor bugfixes. We've also done some slight reorganization of the URLs to fit our evolving understanding of the model, but most things have remained unchanged. I'm curious to hear if anyone has played with the service at all - if you have any questions or feedback, do feel free to &lt;a href="http://pluralsight.com/blogs/craig/contact.aspx"&gt;contact me&lt;/a&gt;. &lt;/div&gt;&lt;img src ="http://pluralsight.com/blogs/craig/aggbug/50814.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Craig Andera</dc:creator></item><item><title>Work</title><link>http://pluralsight.com/blogs/dbox/archive/2008/04/29/50808.aspx</link><pubDate>Wed, 30 Apr 2008 06:14:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/dbox/archive/2008/04/29/50808.aspx</guid><wfw:comment>http://pluralsight.com/blogs/dbox/comments/50808.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/dbox/comments/commentRss/50808.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/dbox/archive/2008/04/29/50808.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://pluralsight.com/blogs/dbox/services/trackbacks/50808.aspx</trackback:ping><source url="http://pluralsight.com/blogs/dbox/rss.aspx">Don Box's Spoutlet</source><description>&lt;P&gt;Doug's posted another &amp;#8220;&lt;A href="http://douglaspurdy.com/2008/04/29/new-languages-compilers/"&gt;we're hiring&lt;/A&gt;&amp;#8221; missive.&lt;/P&gt;
&lt;P&gt;Doug's been running my team for coming up on a year.&lt;/P&gt;
&lt;P&gt;Doug has more passion and energy than anyone I've ever worked with.&lt;/P&gt;
&lt;P&gt;Getting to work on a team that's building a language and a tool is both exciting and intimidating.&lt;/P&gt;
&lt;P&gt;The three most &amp;#8220;personal&amp;#8221; choices a developer makes are language, tool, and OS.&lt;/P&gt;
&lt;P&gt;Working on 2/3rds of that equation is pretty thrilling. &lt;/P&gt;
&lt;P&gt;Way more fun than anything else I've ever done with a computer.&lt;/P&gt;
&lt;P&gt;Way more fun than blogging, hence the relative silence for the past year or so.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/dbox/aggbug/50808.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Don Box</dc:creator></item><item><title>A Whirlwind of Webcasts</title><link>http://pluralsight.com/blogs/jimw/archive/2008/04/28/50803.aspx</link><pubDate>Tue, 29 Apr 2008 00:23:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/jimw/archive/2008/04/28/50803.aspx</guid><wfw:comment>http://pluralsight.com/blogs/jimw/comments/50803.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/jimw/comments/commentRss/50803.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/jimw/archive/2008/04/28/50803.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/jimw/services/trackbacks/50803.aspx</trackback:ping><source url="http://pluralsight.com/blogs/jimw/rss.aspx">You Can Take it With You</source><description>&lt;P&gt;It looks like Webcast season is upon us &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt; &amp;#8230; &lt;/P&gt;
&lt;P&gt;Between now and Tech Ed, &lt;A href="http://www.dotnetfordevices.com/forum.html"&gt;Maarten Struys&lt;/A&gt; and I will be presenting a combined total of 7 webcasts. &lt;/P&gt;
&lt;P&gt;This Wednesday, 30-April and next Wednesday, 7-May I'll be the guest on MSDN's &lt;A href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Then starting next week (week of 5-May), Maarten Struys and I will be co-presenting a multi-part webcast series on a variety of Windows Mobile topics as a lead-in to &lt;A href="http://www.microsoft.com/events/teched2008/developer/default.mspx"&gt;Tech Ed Developer 2008&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 14pt"&gt;&lt;STRONG&gt;geekSpeak &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This Wednesday (30-April) I'll be talking about &lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032374739&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;&lt;EM&gt;SQL Server Compact Tips and Tricks&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; &lt;/EM&gt;(both devices and desktop). &lt;/P&gt;
&lt;P&gt;I'm really looking forward to this talk. Those of you who have followed my blog or who have seen my whitepapers or webcasts know that I'm a big fan of SQL Server Compact. Although it provides excellent code &amp;amp; SQL compatibility with SQL Server, the details of the underlying architecture sometimes require a different approach. That's what we'll be talking about &amp;#8230; how to get the most out of SQL Server Compact. &lt;/P&gt;
&lt;P&gt;Next Wednesday (7-May), I'll be talking about &lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032376632&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;&lt;EM&gt;Windows Communication Foundation (WCF) Strategies for Windows Mobile&lt;/EM&gt;&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Although not the focus of the entire webcast, we'll definitely be talking a bunch about using Store-and-Forward messaging. Whether you're targeting Windows Mobile devices or focus more on desktop applications, you'll want to be there. &lt;/P&gt;
&lt;P&gt;Most of the same strategies we use for Windows Mobile applications apply equally to applications running on a laptop/notebook computer with Store-and-Forward messaging being a great example. Any application (Windows Mobile or Laptop-based) that needs to be away from connectivity periodically faces communications challenges that Store-and-Forward messaging addresses as it allows your app to simply send messages and the Store-and-Forward mechanism caches the messages automatically sending them whenever connectivity becomes available. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Bring your questions&lt;/STRONG&gt;&lt;/SPAN&gt;: If you haven't been to a &lt;A href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/A&gt; webcast before, you don't know what you're missing. &lt;/P&gt;
&lt;P&gt;These are much more two-way than traditional webcasts. Don't get me wrong, I love traditional webcasts where I get to show you a bunch of code but &lt;A href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/A&gt; provides a great adjunct. On &lt;A href="http://blogs.msdn.com/geekspeak/default.aspx"&gt;geekSpeak&lt;/A&gt; we engage much more in a conversation; the discussions are very listener driven with much of the time focused on addressing those things that you ask about. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 14pt"&gt;&lt;STRONG&gt;Countdown to Tech Ed Developer 2008 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;We don't have all of the details posted yet but staring next week (week of 5-May), Maarten and I will be doing webcasts each week covering a different aspect of Windows Mobile development. &lt;/P&gt;
&lt;P&gt;The webcasts are aimed at people who are new to Windows Mobile or who may be looking to gain a deeper understanding of the tools and capabilities of Windows Mobile application development. Keep a watch here on my blog and I'll provide further details on these webcasts as we get them published. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/jimw/aggbug/50803.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Jim Wilson</dc:creator></item><item><title>BizTalk Server 2006 R3 just announced</title><link>http://pluralsight.com/blogs/aaron/archive/2008/04/23/50778.aspx</link><pubDate>Wed, 23 Apr 2008 15:50:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/aaron/archive/2008/04/23/50778.aspx</guid><wfw:comment>http://pluralsight.com/blogs/aaron/comments/50778.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/aaron/comments/commentRss/50778.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/aaron/archive/2008/04/23/50778.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/aaron/services/trackbacks/50778.aspx</trackback:ping><source url="http://pluralsight.com/blogs/aaron/rss.aspx">Service Station, by Aaron Skonnard</source><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/stevemar/default.aspx"&gt;Steve Martin&lt;/A&gt;, director of product&amp;nbsp;management for&amp;nbsp;Microsoft's Connected Systems Division (CSD),&amp;nbsp;&lt;A href="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx"&gt;just announced their plans&lt;/A&gt; for the next version of BizTalk Server on his blog. It will be called &lt;STRONG&gt;BizTalk Server 2006 R3&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;This new version will be updated to work with Windows Server 2008, SQL Server 2008, and Visual Studio 2008. It will also be updated with the following SOA-related features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;New web service registry capabilities with support for UDDI v3.0&lt;/LI&gt;
&lt;LI&gt;Enhanced service enablement of applications through new and enhanced adapters &lt;/LI&gt;
&lt;LI&gt;Enhanced service enablement of &amp;#8220;edge&amp;#8221; devices through BizTalk RFID Mobile&lt;/LI&gt;
&lt;LI&gt;Enhanced interoperability and connectivity support for B2B protocols (like SWIFT, EDI, etc)&lt;/LI&gt;
&lt;LI&gt;SOA patterns and best practices guidance to assist our customer&amp;#8217;s implementations&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;From reading his blog, it doesn't look like they'll be adding official support for hosting WF workflows in this particular release. It looks like we may have to wait for that until Oslo.&lt;/P&gt;&lt;img src ="http://pluralsight.com/blogs/aaron/aggbug/50778.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Aaron Skonnard</dc:creator></item><item><title>Using LINQ to Access SQL Server Compact Directly – A follow up</title><link>http://pluralsight.com/blogs/jimw/archive/2008/04/18/50753.aspx</link><pubDate>Fri, 18 Apr 2008 20:37:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/jimw/archive/2008/04/18/50753.aspx</guid><wfw:comment>http://pluralsight.com/blogs/jimw/comments/50753.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/jimw/comments/commentRss/50753.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/jimw/archive/2008/04/18/50753.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://pluralsight.com/blogs/jimw/services/trackbacks/50753.aspx</trackback:ping><source url="http://pluralsight.com/blogs/jimw/rss.aspx">You Can Take it With You</source><description>&lt;p&gt;You may recall my &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032358820"&gt;webcast&lt;/a&gt; from about 6/7 weeks ago where &lt;a href="http://www.pluralsight.com/blogs/jimw/archive/2008/02/27/50325.aspx"&gt;I talked about&lt;/a&gt; how to use custom extension methods to allow your mobile device applications to efficiently query a SQL Server Compact (SSC) databases directly.
&lt;/p&gt;&lt;p&gt;I received a question today regarding the &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032358820"&gt;webcast&lt;/a&gt;. The question relates to the verbosity of returning anonymous types when using the technique discussed in the &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032358820"&gt;webcast&lt;/a&gt;. For example…
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; records = &lt;span style="color:blue"&gt;from&lt;/span&gt; order &lt;span style="color:blue"&gt;in&lt;/span&gt; resultSet&lt;br/&gt;
			&lt;span style="color:blue"&gt;where&lt;/span&gt; (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;] == &lt;span style="color:#a31515"&gt;"UK"&lt;br/&gt;&lt;/span&gt;
			&lt;span style="color:blue"&gt;select&lt;/span&gt;
			&lt;span style="color:blue"&gt;new&lt;br/&gt;&lt;/span&gt;              {&lt;br/&gt;                  ShipName = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Name"&lt;/span&gt;],&lt;br/&gt;                  ShipAddress = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Address"&lt;/span&gt;],&lt;br/&gt;                  ShipCity = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship City"&lt;/span&gt;],&lt;br/&gt;                  ShipPostalCode = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Postal Code"&lt;/span&gt;],&lt;br/&gt;                  ShipCountry = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;],&lt;br/&gt;                  ShipVia = (&lt;span style="color:blue"&gt;int&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Via"&lt;/span&gt;]&lt;br/&gt;              };&lt;br/&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The verbosity is necessary because "&lt;strong&gt;order&lt;/strong&gt;" in the above LINQ statement is of type &lt;strong&gt;SqlCeUpdatableRecord&lt;/strong&gt;. Although Visual Studio supports generating typed-wrappers for &lt;strong&gt;SqlCeResultSet&lt;/strong&gt;, it doesn't generate wrappers for the &lt;strong&gt;SqlCeUpdatableRecord&lt;/strong&gt; corresponding to the &lt;strong&gt;SqlCeResultSet&lt;/strong&gt;. With that being the case, specifying the individual column values within the anonymous type declaration requires you to use either the indexer (or &lt;strong&gt;Getxxx&lt;/strong&gt; functions).
&lt;/p&gt;&lt;p&gt;Ultimately there's nothing we can do about the way the column values are accessed (unless you write your own typed-wrapper generator for &lt;strong&gt;SqlCeUpdatableRecord&lt;/strong&gt;). What we can do is move the code that creates the anonymous type into a separate function.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;object&lt;/span&gt; ShippingColumns(&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt; order)&lt;br/&gt;{&lt;br/&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;new&lt;br/&gt;&lt;/span&gt;    {&lt;br/&gt;        ShipName = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Name"&lt;/span&gt;],&lt;br/&gt;        ShipAddress = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Address"&lt;/span&gt;],&lt;br/&gt;        ShipCity = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship City"&lt;/span&gt;],&lt;br/&gt;        ShipPostalCode = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Postal Code"&lt;/span&gt;],&lt;br/&gt;        ShipCountry = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;],&lt;br/&gt;        ShipVia = (&lt;span style="color:blue"&gt;int&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Via"&lt;/span&gt;]&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;With that, the LINQ statement becomes very simple.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; records = &lt;span style="color:blue"&gt;from&lt;/span&gt; order &lt;span style="color:blue"&gt;in&lt;/span&gt; resultSet&lt;br/&gt;
			&lt;span style="color:blue"&gt;where&lt;/span&gt; (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;] == &lt;span style="color:#a31515"&gt;"UK"&lt;br/&gt;&lt;/span&gt;
			&lt;span style="color:blue"&gt;select&lt;/span&gt; ShippingColumns(order);&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;Once we move the anonymous type declaration to a separate function we can take things one step further and optimize the column access by caching the column ordinals and then retrieving the column values using the &lt;strong&gt;Getxxx&lt;/strong&gt; functions. 
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;object&lt;/span&gt; ShippingColumns(&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt; order)&lt;br/&gt;{&lt;br/&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_nameIndex == -1)&lt;br/&gt;        InitializeIndexes(order);&lt;br/&gt;&lt;br/&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;new&lt;br/&gt;&lt;/span&gt;    {&lt;br/&gt;        ShipName = order.GetString(_nameIndex),&lt;br/&gt;        ShipAddress = order.GetString(_addressIndex),&lt;br/&gt;        ShipCity = order.GetString(_cityIndex),&lt;br/&gt;        ShipPostalCode = order.GetString(_postalCodeIndex),&lt;br/&gt;        ShipCountry = order.GetString(_countryIndex),&lt;br/&gt;        ShipVia = order.GetInt32(_viaIndex)&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;&lt;span style="color:blue"&gt;&lt;br/&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;void&lt;/span&gt; InitializeIndexes(&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt; record)&lt;br/&gt;{&lt;br/&gt;    _nameIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship Name"&lt;/span&gt;);&lt;br/&gt;    _addressIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship Address"&lt;/span&gt;);&lt;br/&gt;    _cityIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship City"&lt;/span&gt;);&lt;br/&gt;    _postalCodeIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship Postal Code"&lt;/span&gt;);&lt;br/&gt;    _countryIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;);&lt;br/&gt;    _viaIndex = record.GetOrdinal(&lt;span style="color:#a31515"&gt;"Ship Via"&lt;/span&gt;);&lt;br/&gt;}&lt;br/&gt;&lt;span style="color:blue"&gt;&lt;br/&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _nameIndex = -1;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _addressIndex = -1;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _cityIndex = -1;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _postalCodeIndex = -1;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _countryIndex = -1;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; _viaIndex = -1;&lt;br/&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;Although not a huge performance increase, storing the column indices does eliminate the overhead of the indexer looking up the column name each time. More importantly, using the strongly-typed &lt;strong&gt;Getxxx&lt;/strong&gt; functions eliminates the overhead of boxing any column values that are value-types. As you know, excessive boxing creates a lot of scrap objects which leads to increased memory and garbage collection overhead.
&lt;/p&gt;&lt;p&gt;Using regular class methods like those above work just fine; however, if you find that you use a common anonymous type throughout different parts of your application, you may want to use an extension method – extension methods are also nice just because of their class-member-like syntax.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;static&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;ResultSetExtension&lt;br/&gt;&lt;/span&gt;{&lt;br/&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;static&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt;&amp;gt; Where(&lt;br/&gt;
			&lt;span style="color:blue"&gt;this&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;SqlCeResultSet&lt;/span&gt; resultSet, &lt;span style="color:#2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt;, &lt;span style="color:blue"&gt;bool&lt;/span&gt;&amp;gt; theFunc)&lt;br/&gt;    {&lt;br/&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;PrepAwareEnumerableWrapper&lt;/span&gt;(resultSet, theFunc);&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;static&lt;/span&gt;
			&lt;span style="color:blue"&gt;object&lt;/span&gt; ShippingColumns(&lt;span style="color:blue"&gt;this&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt; order)&lt;br/&gt;    {&lt;br/&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_nameIndex == -1)&lt;br/&gt;            InitializeIndexes(order);&lt;br/&gt;&lt;br/&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;new&lt;br/&gt;&lt;/span&gt;        {&lt;br/&gt;            ShipName = order.GetString(_nameIndex),&lt;br/&gt;            ShipAddress = order.GetString(_addressIndex),&lt;br/&gt;            ShipCity = order.GetString(_cityIndex),&lt;br/&gt;            ShipPostalCode = order.GetString(_postalCodeIndex),&lt;br/&gt;            ShipCountry = order.GetString(_countryIndex),&lt;br/&gt;            ShipVia = order.GetInt32(_viaIndex)&lt;br/&gt;        };&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;
			&lt;span style="color:blue"&gt;void&lt;/span&gt; InitializeIndexes(&lt;span style="color:#2b91af"&gt;SqlCeUpdatableRecord&lt;/span&gt; record) { ... }&lt;br/&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;With the extension method, the LINQ statement becomes…
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; records = &lt;span style="color:blue"&gt;from&lt;/span&gt; order &lt;span style="color:blue"&gt;in&lt;/span&gt; resultSet&lt;br/&gt;
			&lt;span style="color:blue"&gt;where&lt;/span&gt; (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;] == &lt;span style="color:#a31515"&gt;"UK"&lt;br/&gt;&lt;/span&gt;
			&lt;span style="color:blue"&gt;select&lt;/span&gt; order.ShippingColumns();&lt;br/&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;A couple of notes before I finish up… 
&lt;/p&gt;&lt;p&gt;One thing to keep in mind is that all of these functions that create the anonymous type have a return type of &lt;strong&gt;object&lt;/strong&gt;. This means that the &lt;strong&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/strong&gt; collection that is created by the LINQ statement will be of type &lt;strong&gt;IEnumerable&amp;lt;object&amp;gt;&lt;/strong&gt; rather than &lt;strong&gt;IEnumerable&amp;lt;&lt;em&gt;compiler_generated_type&lt;/em&gt;&amp;gt;&lt;/strong&gt;. In most cases this difference does not matter but it is something to be aware of.
&lt;/p&gt;&lt;p&gt;And for a final note, if you do find yourself returning the same anonymous type construct from a number of LINQ statements, you might want to consider defining an explicit type and then constructing instances of that type within the LINQ statement. In my experience, anytime I find myself using an anonymous type/function/etc. more than once or twice that I ultimately end up needing access to it in my code in a non-anonymous fashion.
&lt;/p&gt;&lt;p&gt;To return a specific type from a LINQ statement, simply define a type that has a constructor that accepts a &lt;strong&gt;SqlCeUpdatableRecord&lt;/strong&gt; and assigns the desired columns to the corresponding type members – basically the constructor will look like the &lt;strong&gt;ShippingColumns&lt;/strong&gt; methods shown above. Assuming that you've defined a class named &lt;strong&gt;ShipInfo&lt;/strong&gt; with the appropriate constructor, your LINQ statement would look like the following…
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; records = &lt;span style="color:blue"&gt;from&lt;/span&gt; order &lt;span style="color:blue"&gt;in&lt;/span&gt; resultSet&lt;br/&gt;
			&lt;span style="color:blue"&gt;where&lt;/span&gt; (&lt;span style="color:blue"&gt;string&lt;/span&gt;)order[&lt;span style="color:#a31515"&gt;"Ship Country"&lt;/span&gt;] == &lt;span style="color:#a31515"&gt;"UK"&lt;br/&gt;&lt;/span&gt;
			&lt;span style="color:blue"&gt;select new&lt;/span&gt; ShipInfo(order);&lt;br/&gt;&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;I've updated one of the samples from the original &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032358820"&gt;webcast&lt;/a&gt; to include examples of what we've talked about in this post. If you'd like the updated sample, you can &lt;a href="http://jwhh.com/Downloads/LinqSscFollowUp.zip"&gt;&lt;strong&gt;download it from here&lt;/strong&gt;&lt;/a&gt;. The methods you'll want to look at in the download are &lt;strong&gt;menuRedefineType_Click&lt;/strong&gt;, &lt;strong&gt;menuDynamicType_Click&lt;/strong&gt;, &lt;strong&gt;menuDynamicTypeExtMethod_Click&lt;/strong&gt; all of which are in the Form1.cs source file. 
&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/jimw/aggbug/50753.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Jim Wilson</dc:creator></item><item><title>Randomizing rows in a DataTable</title><link>http://pluralsight.com/blogs/fritz/archive/2008/04/16/50729.aspx</link><pubDate>Wed, 16 Apr 2008 13:38:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/fritz/archive/2008/04/16/50729.aspx</guid><wfw:comment>http://pluralsight.com/blogs/fritz/comments/50729.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/fritz/comments/commentRss/50729.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/fritz/archive/2008/04/16/50729.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://pluralsight.com/blogs/fritz/services/trackbacks/50729.aspx</trackback:ping><source url="http://pluralsight.com/blogs/fritz/rss.aspx">Onion Blog</source><description>&lt;p&gt;I've been working on a project recently where I had the need to randomly shuffle all of the rows in a DataTable. I wanted to do it with the DataTable itself instead of in the act of populating the DataTable for a couple of reasons: 1) I wanted to keep the DataTable in memory and shuffle it in place multiple times without going back to the source, and 2) I had multiple sources where data was coming from (SQL and XML) so I preferred to keep the randomization logic in one place. I also didn't want to copy all of the data (even though it was not a large amount) each time I shuffled, so I decided to use a DataView to display the data shuffled each time I needed it.
&lt;/p&gt;&lt;p&gt;Here's the utility function I came up with  - each time you call RandomizeDataTable it will return a newly shuffled DataView of all the data passed in through the DataTable. Note that because I reuse the added column "rndSortId" each time, any DataViews retrieved from previous calls to the method will have the &lt;em&gt;new&lt;/em&gt; shuffle order. You could change this behavior by adding a new column each time with its own unique sort sequence.
&lt;/p&gt;&lt;p&gt;As always, comments/improvements welcome – enjoy!
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:blue"&gt;public static&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;DataSetUtilities
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;static&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;Random&lt;/span&gt; _rand = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;Random&lt;/span&gt;();   
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;static&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;DataView&lt;/span&gt; RandomizeDataTable(&lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt; dt)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;    {     
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:green"&gt;// Create array of indices and populate with ordinal values
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt;[] indices = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt;[dt.Rows.Count];
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;for&lt;/span&gt; (&lt;span style="color:blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; indices.Length; i++)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;            indices[i] = i;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:green"&gt;// Knuth-Fisher-Yates shuffle indices randomly
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;for&lt;/span&gt; (&lt;span style="color:blue"&gt;int&lt;/span&gt; i = indices.Length - 1; i &amp;gt; 0; i--)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;        {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; n = _rand.Next(i + 1);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; tmp = indices[i];
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;            indices[i] = indices[n];
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;            indices[n] = tmp;            
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:green"&gt;// Add new column to data table (if it's not there already)
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:green"&gt;// to store shuffle index
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (dt.Columns[&lt;span style="color:#a31515"&gt;"rndSortId"&lt;/span&gt;] == &lt;span style="color:blue"&gt;null&lt;/span&gt;)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;            dt.Columns.Add(&lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"rndSortId"&lt;/span&gt;, &lt;span style="color:blue"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue"&gt;int&lt;/span&gt;)));
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;int&lt;/span&gt; rndSortColIdx = dt.Columns[&lt;span style="color:#a31515"&gt;"rndSortId"&lt;/span&gt;].Ordinal;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;for&lt;/span&gt; (&lt;span style="color:blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; dt.Rows.Count; i++)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;            dt.Rows[i][rndSortColIdx] = indices[i];
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:#2b91af"&gt;DataView&lt;/span&gt; dv = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;DataView&lt;/span&gt;(dt);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;        dv.Sort = &lt;span style="color:#a31515"&gt;"rndSortId"&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt; dv;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas; font-size:12pt"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/fritz/aggbug/50729.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Fritz Onion</dc:creator></item><item><title>Password Minder 1.5.0.10 Released</title><link>http://pluralsight.com/blogs/keith/archive/2008/04/12/50712.aspx</link><pubDate>Sat, 12 Apr 2008 23:49:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/keith/archive/2008/04/12/50712.aspx</guid><wfw:comment>http://pluralsight.com/blogs/keith/comments/50712.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/keith/comments/commentRss/50712.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/keith/archive/2008/04/12/50712.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://pluralsight.com/blogs/keith/services/trackbacks/50712.aspx</trackback:ping><source url="http://pluralsight.com/blogs/keith/rss.aspx">Security Briefs</source><description>&lt;p&gt;This is a minor update. Here's what was changed (from the readme file):&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Incorporated a patch from Richard Howells to give&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you the option to turn on/off the "Always On Top" behavior&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; of the main form. I still recommend not keeping PWM in&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memory all the time - only run it when you need it to keep&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; your master key safe. I also used adjusted the Auto-gen&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; password dialog to be more reasonable: it now by default&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; specifies a 12-char password, not the 20 it used to - most&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; websites can't handle a password that long. I also removed&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the lower case 'l' and punctuation, with a button that allows&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you to add back in the puncutation marks if you want.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; One last minor thing - I added AcceptsReturn=true to the&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notes editor so it won't disappear when you press Enter :) &lt;p&gt;You can access the latest version from our &lt;a href="http://www.pluralsight.com/tools.aspx" target="_blank"&gt;tools page&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/keith/aggbug/50712.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Keith Brown</dc:creator></item><item><title>Applied BTS R2 in the Windy City</title><link>http://pluralsight.com/blogs/matt/archive/2008/04/10/50700.aspx</link><pubDate>Thu, 10 Apr 2008 22:00:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/matt/archive/2008/04/10/50700.aspx</guid><wfw:comment>http://pluralsight.com/blogs/matt/comments/50700.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/matt/comments/commentRss/50700.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/matt/archive/2008/04/10/50700.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://pluralsight.com/blogs/matt/services/trackbacks/50700.aspx</trackback:ping><source url="http://pluralsight.com/blogs/matt/rss.aspx">Matt's Musings</source><description>&lt;p&gt;I've been teaching mostly WF and WCF lately, so I'm excited that in a couple of weeks (April 22) I'll be getting a chance to teach our core BizTalk course again in the lovely city of Chicago.&amp;nbsp; I'm excited because there is a lot of cool stuff for this particular open enrollment.&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;1) R2 - need I say more? I will.&amp;nbsp; We will be using the latest bits to teach the core course from now on so you'll be learning BizTalk Server fundamentals using the latest and greatest version.&amp;nbsp; This is still a class for developers new to BizTalk, so if you have taken this class, you might be interested in the &lt;a href="http://www.pluralsight.com/courses/AppliedBizTalkServer2006R2.aspx" target="_blank"&gt;R2 features class&lt;/a&gt; that Jon is teaching in May and August.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;2) Dual Monitors!&amp;nbsp; Our crack sales team has negotiated dual monitors from the hardware vendor so you'll be able to see the lab manual and Visual Studio each in full screen glory! &lt;/p&gt; &lt;p&gt;3) It's in downtown Chicago right on Wacker Drive near all sorts of cool stuff for the evenings.&lt;/p&gt; &lt;p&gt;4) It's BizTalk and we'll cover all the three letter acronyms (TLA) BRE, BAM, WCF,WSE,ASMX (ok that's four letters), CSV, HAT, PUB (actually a technical term, but maybe where we'll be in the evenings as well), SUB, EAI, ESB, SOA.&amp;nbsp; I could go on, but you get the picture.&amp;nbsp; &lt;/p&gt; &lt;p&gt;5) As if all the above are not enough, we have some seats available and the course is in a week and half, so the sales guys are "ready to deal".&amp;nbsp; Actually, their just ready to cut you some discounts :) , especially if you sign up two or three people together, but even if you are just signing up one developer.&amp;nbsp; &lt;a href="http://www.pluralsight.com/contact.aspx" target="_blank"&gt;Talk to our fabulous sales team&lt;/a&gt; to get more information or register with a discount.&amp;nbsp; Just tell them you read about it on my blog.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Hope to see you there, and once I get back from the class, I promise some more technical content.&amp;nbsp; I've been working on some demos and samples that I'll be posting over the next couple of months.&amp;nbsp; &lt;/p&gt;&lt;img src ="http://pluralsight.com/blogs/matt/aggbug/50700.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Matt Milner</dc:creator></item><item><title>Demos for Boston .NET User Group talk on Silverlight 2</title><link>http://pluralsight.com/blogs/fritz/archive/2008/04/09/50694.aspx</link><pubDate>Thu, 10 Apr 2008 02:48:00 GMT</pubDate><guid isPermaLink="true">http://pluralsight.com/blogs/fritz/archive/2008/04/09/50694.aspx</guid><wfw:comment>http://pluralsight.com/blogs/fritz/comments/50694.aspx</wfw:comment><wfw:commentRss>http://pluralsight.com/blogs/fritz/comments/commentRss/50694.aspx</wfw:commentRss><comments>http://pluralsight.com/blogs/fritz/archive/2008/04/09/50694.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://pluralsight.com/blogs/fritz/services/trackbacks/50694.aspx</trackback:ping><source url="http://pluralsight.com/blogs/fritz/rss.aspx">Onion Blog</source><description>For the attendees of tonight's user group talk in Waltham, you can grab the demos &lt;a href="http://www.pluralsight.com/fritz/demos/BostonDotNet_FritzOnion_04_2008.zip"&gt;here&lt;/a&gt;. Thanks for coming, and for all the great questions!
&lt;br /&gt;&lt;br /&gt;&lt;img src ="http://pluralsight.com/blogs/fritz/aggbug/50694.aspx" width = "1" height = "1" /&gt;</description><dc:creat