<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>David Waddleton's Geek Speak</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/davidwaddleton/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/feed.xml</link>
    <description>Find out what Geeks talk about</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:20:27 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Part 2: Using LINQ XML in your Unit Testing</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/part-2-using-linq-xml-in-your-unit-testing</link>
      <pubDate>Sat, 07 Jun 2008 15:28:55 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2008/06/07/part-2-using-linq-xml-in-your-unit-testing/</guid>
      <description><![CDATA[Technorati Tags: Unit Test,LINQ,XML  In Part 1,&#160; we talked about creating LINQ objects&#160;...]]></description>
      <content:encoded><![CDATA[<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e50b673-039c-44c4-9683-1b3a894f4cff" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="https://technorati.com/tags/Unit%20Test" rel="tag">Unit Test</a>,<a href="https://technorati.com/tags/LINQ" rel="tag">LINQ</a>,<a href="https://technorati.com/tags/XML" rel="tag">XML</a></div>  <p>In <a href="https://blogs.msdn.com/davidwaddleton/archive/2008/05/21/are-you-using-linq-i-would-love-to-know-how.aspx" target="_blank">Part 1</a>,&#160; we talked about creating LINQ objects&#160; and getting data.&#160; This time, we are going to show how to use XML with LINQ to test a SQL database.&#160; This part is really not difficult, we are just going to cover the basics of getting started. I have made the conscious decision that I am going to use a SQL database during my development process.&#160; You may decide that you want to do use a different methodology.&#160; These are some of your options:</p>  <ul>   <li><a href="https://www.martinfowler.com/eaaCatalog/repository.html" target="_blank">Repository Pattern</a> </li>    <li>In-Memory Database </li>    <li>Development Database </li>    <li>Live Database&#160; </li> </ul>  <p><strong><em>Step 1: Generate Data</em></strong>     <br />First, you want to create some test data.&#160; Since, I did not really wanted to do this by hand I found a site <a href="https://www.generatedata.com">www.generatedata.com</a>, that has an online utility for generating data.&#160; The best part was the different formats that it supports. </p>  <p><strong><em>Step 2: Create Unit Test Project<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/davidwaddleton/WindowsLiveWriter/Part2UnitTestingwithLINQ_13A5B/image_2.png" original-url="https://blogs.msdn.com/blogfiles/davidwaddleton/WindowsLiveWriter/Part2UnitTestingwithLINQ_13A5B/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="213" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/davidwaddleton/WindowsLiveWriter/Part2UnitTestingwithLINQ_13A5B/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/davidwaddleton/WindowsLiveWriter/Part2UnitTestingwithLINQ_13A5B/image_thumb.png" width="212" align="right" border="0" /></a>         <br /></em></strong>Now that I have data, I created a Unit Test project and now I am ready to really get some&#160; work done.&#160; In this project, I created a &quot;Data&quot; directory and put my generated XML from Step 1.&#160; To the right is an example of what my Unit Testing file structure currently looks like.</p>  <p>Step 3: Create Helper    <br />The next thing we want to do is create a helper that will be used to populate XML data to SQL. Next, lets create a class, and name it CustomerHelper.&#160; In my class, I made the following adjustments.</p>  <ul>   <li>References      <ul>       <li>Business Library where my model LINQ objects are held. </li>        <li>System.Linq </li>        <li>&#160;<a href="https://msdn.microsoft.com/en-us/library/bb387098.aspx" target="_blank">System.Xml.Linq</a> </li>     </ul>   </li>    <li>Make the class static. (See below sample) </li> </ul>  <p>Next, we need to add some constants to hold the XML and resulting collections that will get loaded.&#160; Mine looks like the following:</p>  <div class="csharpcode">   <pre class="alt">    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">class</span> CustomerHelper</pre>

  <pre>    {</pre>

  <pre class="alt">        <span class="kwrd">static</span> XDocument xmlCustomers;</pre>

  <pre>        <span class="kwrd">static</span> List&lt;Customer&gt; customers;</pre>

  <pre class="alt">&#160;</pre>

  <pre>        <span class="kwrd">public</span> <span class="kwrd">static</span> List&lt;Customer&gt; Customers</pre>

  <pre class="alt">        {</pre>

  <pre>            get { <span class="kwrd">return</span> customers; }</pre>

  <pre class="alt">        }</pre>

  <pre>     }</pre>

  <pre>&#160;</pre>
</div>
<style type="text/css">




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>Next we need to automatically load the data in the constructor.</p>

<div class="csharpcode">
  <pre class="alt">            xmlCustomers = XDocument.Load(<span class="str">&quot;Customers.xml&quot;</span>);</pre>

  <pre>            customers = (from c <span class="kwrd">in</span> xmlCustomers.Descendants(<span class="str">&quot;Customer&quot;</span>)</pre>

  <pre class="alt">                         select <span class="kwrd">new</span> Customer</pre>

  <pre>                         {</pre>

  <pre class="alt">                             FirstName = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;FirstName&quot;</span>),</pre>

  <pre>                             LastName = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;LastName&quot;</span>),</pre>

  <pre class="alt">                             MiddleName = <span class="kwrd">string</span>.Empty,</pre>

  <pre>                             Apartment = <span class="kwrd">string</span>.Empty,</pre>

  <pre class="alt">                             Address = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;Address&quot;</span>),</pre>

  <pre>                             City = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;City&quot;</span>),</pre>

  <pre class="alt">                             Country = <span class="str">&quot;USA&quot;</span>,</pre>

  <pre>                             Email = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;Email&quot;</span>),</pre>

  <pre class="alt">                             PostalCode = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;PostalCode&quot;</span>),</pre>

  <pre>                             State = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;State&quot;</span>),</pre>

  <pre class="alt">                             Telephone = (<span class="kwrd">string</span>)c.Element(<span class="str">&quot;Telephone&quot;</span>),</pre>

  <pre>                         }</pre>

  <pre class="alt">                     ).ToList();</pre>
</div>
<style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>So some explaining, need to be done about what is happening here.&#160; First we are loading the XML file into an <a href="https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx" target="_blank">XDocument</a>.&#160; That XDocument will then act just like SQL where we can query against it like any other data.&#160; LINQ looks at the object just like it would for SQL except there are some additional properties and methods.&#160; An example of the data is below. We query the data and turn it into LINQ SQL objects.&#160; The query is doing the following:</p>

<ol>
  <li>Query the xmlCustomer object looking for the &quot;Customer&quot; nodes. </li>

  <li>In each customer node, we want to take the selected elements and populate them into our Customer object. </li>

  <li>After building the query, execute the code now and return a list of Customers. </li>
</ol>

<pre class="csharpcode"> <span class="kwrd">&lt;</span><span class="html">Customers</span><span class="kwrd">&gt;</span>
   <span class="kwrd">&lt;</span><span class="html">Customer</span><span class="kwrd">&gt;</span>
     <span class="kwrd">&lt;</span><span class="html">FirstName</span><span class="kwrd">&gt;</span>Bevis<span class="kwrd">&lt;/</span><span class="html">FirstName</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">LastName</span><span class="kwrd">&gt;</span>Dalton<span class="kwrd">&lt;/</span><span class="html">LastName</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">Address</span><span class="kwrd">&gt;</span>5394 Dis Ave<span class="kwrd">&lt;/</span><span class="html">Address</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">City</span><span class="kwrd">&gt;</span>Tamuning<span class="kwrd">&lt;/</span><span class="html">City</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">State</span><span class="kwrd">&gt;</span>Wisconsin<span class="kwrd">&lt;/</span><span class="html">State</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">PostalCode</span><span class="kwrd">&gt;</span>04338<span class="kwrd">&lt;/</span><span class="html">PostalCode</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">Telephone</span><span class="kwrd">&gt;</span>(772) 462-2385<span class="kwrd">&lt;/</span><span class="html">Telephone</span><span class="kwrd">&gt;</span> 
     <span class="kwrd">&lt;</span><span class="html">Email</span><span class="kwrd">&gt;</span>lorem.luctus.ut@elitEtiam.ca<span class="kwrd">&lt;/</span><span class="html">Email</span><span class="kwrd">&gt;</span> 
   <span class="kwrd">&lt;/</span><span class="html">Customer</span><span class="kwrd">&gt;</span>
 <span class="kwrd">&lt;/</span><span class="html">Customers</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>If we try and run this now, it will not work because we need to do a little bit of plumbing first.</p>

<p><strong><em>Step 4: Start Testing</em></strong></p>

<p>After creating my unit test file, I add a reference to my LINQ Database Context, which in my case is called InventoryDBDataContext.</p>

<pre class="csharpcode">        InventoryDBDataContext db;
In my Test Initialize I create an instance of my database context, <br />so each test will have a new one.</pre>

<pre class="csharpcode">        [TestInitialize()]
        <span class="kwrd">public</span> <span class="kwrd">void</span> MyTestInitialize()
        {
            db = InventoryDBDataContext.Create();
        }</pre>

<pre class="csharpcode">Now I just want to do a simple test to make sure that I can get <br />data from XML and into SQL.</pre>

<pre class="csharpcode">        [TestMethod]
        [<a href="https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.common.deploymentitem.aspx" target="_blank">DeploymentItem</a>(<span class="str">@&quot;\Data\&quot;)]
        public void ShouldCreateAGroupOfCustomers()
        {
            ShouldDeleteAllCustomers();
            foreach (Customer cust in CustomerHelper.Customers)
            {
                db.Customers.<a href="https://msdn.microsoft.com/en-us/library/bb763516.aspx" target="_blank">InsertOnSubmit</a>(cust);
                db.SubmitChanges();
            }
            Assert.IsTrue(db.Customers.Count() &gt;= 5);
        }

        public void ShouldDeleteAllCustomers()
        {
            foreach (Customer c in db.Customers)
            {
                db.Customers.<a href="https://msdn.microsoft.com/en-us/library/bb763473.aspx" target="_blank">DeleteOnSubmit</a>(c);
            }
            db.SubmitChanges();
            Assert.IsTrue(db.Customers.Count() == 0);
            db.ExecuteCommand(&quot;</span>DBCC CHECKIDENT (<span class="str">'Customer'</span>, RESEED, 0)&quot;);
        }

The key to this whole process is the [DeploymentItem(@&quot;\Data\&quot;] <br />attribute.  This takes the XML files and makes sure that they<br />are deployed with the rest of the files.  The other key is <br />that I want to clean up my SQL database after each test, so <br />I clear out my data and make sure that the Identity field <br />gets reset so it matches the other XML data which will <br />be used later.  </pre>

<pre class="csharpcode">So, now we are done.  You should have working test, that can<br /><br />take XML data and put it into SQL for Data Populate, but<br />you also have a set of data that you can then run test against<br />and test that you got correct results.</pre>

<pre class="csharpcode">In the next installment, we will examine the full completed LINQ <br />middle tier of our application.</pre>

<pre class="csharpcode">Have fun.<br /></pre>
<style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style><style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style><style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>]]></content:encoded>
    </item>
    <item>
      <title>An implementation of a Generic Container for WCF</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/an-implementation-of-a-generic-container-for-wcf</link>
      <pubDate>Thu, 05 Jun 2008 18:23:15 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2008/06/05/an-implementation-of-a-generic-container-for-wcf/</guid>
      <description><![CDATA[I am currently writing a service using WCF.&#160; One of the things that I need to expose is a...]]></description>
      <content:encoded><![CDATA[<p>I am currently writing a service using WCF.&#160; One of the things that I need to expose is a container that wraps my results to provide counts. I came up with the below implementations.&#160; One of the things that becomes a problem is the resulting serialization of the container name. By default, the serialized object would be ContainerOf[T].&#160; By defining a name with a String.Format type of syntax, [DataContract(Name=&quot;{0}sContainer&quot;)].&#160; Would create&#160; the following for the Apple object: ApplesContainer.   <br /></p>  <p>Enjoy</p>  <p>/// &lt;summary&gt;   <br />/// Generic Container for holding results    <br />/// &lt;/summary&gt;    <br />/// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;    <br />[DataContract(Name=&quot;{0}sContainer&quot;)]    <br />public class Container&lt;T&gt;    <br />{    <br />&#160;&#160;&#160; /// &lt;summary&gt;    <br />&#160;&#160;&#160; /// TotalResults that can be returned.    <br />&#160;&#160;&#160; /// &lt;/summary&gt;    <br />&#160;&#160;&#160; [DataMember]    <br />&#160;&#160;&#160; public int TotalResults    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; get;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; set;    <br />&#160;&#160;&#160; } </p>  <p>&#160;&#160;&#160; /// &lt;summary&gt;   <br />&#160;&#160;&#160; /// Container results.    <br />&#160;&#160;&#160; /// &lt;/summary&gt;    <br />&#160;&#160;&#160; [DataMember]    <br />&#160;&#160;&#160; public IEnumerable&lt;T&gt; Results    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; get;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; set;    <br />&#160;&#160;&#160; }    <br />}</p>  <p>&#160;</p>  <p>References:</p>  <ul>   <li><a href="https://msdn.microsoft.com/en-us/library/ms731045.aspx" target="_blank">Data Contract Names</a></li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>Are you using LINQ? Lets get started.</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/are-you-using-linq-lets-get-started</link>
      <pubDate>Wed, 21 May 2008 22:52:43 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2008/05/21/are-you-using-linq-lets-get-started/</guid>
      <description><![CDATA[So, I am going to talk about LINQ.&#160; There are a lot of great resources out there on LINQ.&#160;...]]></description>
      <content:encoded><![CDATA[<p>So, I am going to talk about LINQ.&#160; There are a lot of great resources out there on LINQ.&#160; I am going to have a series of articles on building an application utilizing LINQ, WCF and other technologies. Some of the things that I want to show is how you can use LINQ as part of your testing.&#160; So lets get started.<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/davidwaddleton/WindowsLiveWriter/AreyouusingLINQIwouldlovetoknowhow_12316/image_2.png" original-url="https://blogs.msdn.com/blogfiles/davidwaddleton/WindowsLiveWriter/AreyouusingLINQIwouldlovetoknowhow_12316/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="Customer Definition" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/davidwaddleton/WindowsLiveWriter/AreyouusingLINQIwouldlovetoknowhow_12316/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/davidwaddleton/WindowsLiveWriter/AreyouusingLINQIwouldlovetoknowhow_12316/image_thumb.png" width="169" align="right" border="0" /></a></p>  <p>So the first thing that we need is some data to define. The sample application that we are going to build is a simple home inventory system.&#160; The image to the right defines a Customer.&#160; </p>  <p>There is three ways that we can generate this data definition. </p>  <ol>   <li><a title="Sql Metal Command Line Tool" href="https://msdn.microsoft.com/en-us/library/bb386987.aspx" target="_blank" rel="tag">Command Line Tool</a> (SqlMetal.exe) </li>    <li><a title="O/R Designer" href="https://msdn.microsoft.com/en-us/library/bb384429.aspx" target="_blank">Designer Wizard</a> (.dbml) </li>    <li><a title="Manual Linq to Sql creation" href="https://msdn.microsoft.com/en-us/library/bb546174.aspx" target="_blank">Manually</a> (.cs) </li> </ol>  <p>The second option is the simplest but you don't have very much control of what gets generated. So, I favor creating my files manually, because I have total control and I only define what I need (Option 3).</p>  <h3>Step 1: Define data class.</h3>  <p><em>Make sure that you have a reference to System.Data.Linq.</em></p>  <table cellspacing="0" cellpadding="2" width="579" border="0"><tbody>     <tr>       <td valign="top" width="243"><strong><em>Customer Definition</em></strong>(partial)</td>        <td valign="top" width="334">&#160;</td>     </tr>      <tr>       <td valign="top" width="243">         <pre class="csharpcode">    [Table(Name=<span class="str">&quot;Customer&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> Customer
    {
        [Column(Name=<span class="str">&quot;Id&quot;</span>,<br />         IsDbGenerated=<span class="kwrd">true</span>,<br />         DbType=<span class="str">&quot;int&quot;</span>,<br />         IsPrimaryKey=<span class="kwrd">true</span>)]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Id
        {
            get;
            set;
        }
        
        [Column(Name=<span class="str">&quot;FirstName&quot;</span>)]
        <span class="kwrd">public</span> <span class="kwrd">string</span> FirstName
        {
            get;
            set;
        }
    }</pre>
        <style type="text/css">





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style></td>

      <td valign="top" width="334">To the left is my definition of my Customer table.&#160; What we essentially doing is marking up a class, that LINQ will use to communicate to our database.&#160; This class communicates several key pieces of information to us.&#160; The data table, fields and keys that we define as important. 
        <br />

        <br />So starting at the top, we have defined that our Customer class will talk to the Customer table.&#160; This could be a view or a stored procedure.&#160; The [Table(Name=&quot;Customer&quot;)] attribute handles this for us.&#160; We can do other advanced features, but we will talk about those at a different time. 

        <br />

        <br />Next, notice each property is marked with a [Column(Name=?)] column attribute.&#160; This allows LINQ to map your database column with your physical class properties. This allows the flexibility to have different database column names than what you want to expose to your code.&#160; There are additional attributes that allow you to set the Database type, and constraint information. 

        <br />

        <br />Last, you will notice that the Id field has some of those additional properties. We are telling LINQ that the Id field is an identity field, or SqlType &quot;int&quot; and is a primary key.&#160; If you want LINQ to handle some of your data input automatically, you have to be verbose on your Column Attribute definitions to handle your constraints and keys.&#160; If this case, since we setup keys on our tables and we want to use those keys to get data.&#160; We have to make sure that LINQ knows that and we will use this in the future. 

        <br /></td>
    </tr>
  </tbody></table>

<h3>Step 2: Create Data Context</h3>

<p>In this step we are going to create a data context to handle our database interactions.&#160; First, we need to create a class that derives from <a title="System.Data.Linq.DataContext" href="https://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.aspx" target="_blank">System.Data.Linq.DataContext</a>.&#160;&#160; Second, we create a static Create method to handle the initialization of the class for ease of use.&#160; Third, define tables, procedures and queries.&#160; Below show a simple class for our use.</p>

<pre class="csharpcode"><span class="kwrd">    public</span> <span class="kwrd">class</span> InventoryDBDataContext : DataContext
    {
        <span class="kwrd">public</span> InventoryDBDataContext(<span class="kwrd">string</span> connection)
            : <span class="kwrd">base</span>(connection)
        {
        }

        <span class="kwrd">public</span> <span class="kwrd">static</span> InventoryDBDataContext Create()
        {
            <span class="kwrd">string</span> connection = ConfigurationManager.ConnectionStrings[<span class="str">&quot;InventoryDB&quot;</span>].ConnectionString;
            <span class="kwrd">return</span> <span class="kwrd">new</span> InventoryDBDataContext(connection);
        }

        <span class="kwrd">public</span> Table&lt;Customer&gt; Customers;
    }</pre>

<p>You will notice that the static Create method allows for the hiding of implementation.&#160; In the next part you will see how this is helpful.</p>
<style type="text/css">



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<h3>Step 3: Get Data</h3>

<p>Well, we finally are ready to get data.&#160; To get a list of customer, all that we have to do is the following:</p>

<pre class="csharpcode"><span class="kwrd">using</span> (InventoryDBDataContext context = InventoryDBDataContext.Create())
{
         var customers = (from c <span class="kwrd">in</span> context.Customers
                                 select c).ToList();
         Assert.IsTrue(customers.Count &gt; 0);
}</pre>

<p>Now you see that we are now containing the calls with a &quot;using&quot; statement. This allows for better garbage collection.&#160; With the 3.0 framework, you can allow a runtime definition of variables by just using the <a title="var keyword" href="https://msdn.microsoft.com/en-us/library/bb383973.aspx" target="_blank">&quot;var&quot; keyword</a>.&#160; The selection of the data looks very familiar with TSQL statements.&#160; The selection pieces defined:</p>

<table cellspacing="0" cellpadding="2" width="491" border="0"><tbody>
    <tr>
      <td valign="top" width="199"><strong>TSQL Query</strong></td>

      <td valign="top" width="290"><strong>Definition</strong></td>
    </tr>

    <tr>
      <td valign="top" width="199">from c in context.Customers</td>

      <td valign="top" width="290">Search all customers from the Database.</td>
    </tr>

    <tr>
      <td valign="top" width="199">select c</td>

      <td valign="top" width="290">return the selected customers as a whole Customer object.</td>
    </tr>

    <tr>
      <td valign="top" width="199">.ToList()</td>

      <td valign="top" width="290">Immediately execute the LINQ query.</td>
    </tr>
  </tbody></table>

<p>&#160;</p>

<p>We have now completed the basics with getting started with LINQ.&#160; Next time we will take a deeper look into LINQ queries and other customization&#160; of our classes.</p>

<p>Let me know what you think.&#160; Next time we will cover how to use XML LINQ in unit testing our code.</p>

<p>David Waddleton</p>

<p>Links:</p>

<ul>
  <li><a title="Attribute Mappings" href="https://msdn.microsoft.com/en-us/library/bb386971.aspx" target="_blank">Attribute Mappings</a> </li>

  <li><a title="Data Types and Functions" href="https://msdn.microsoft.com/en-us/library/bb386970.aspx" target="_blank">Data Types and Functions</a> </li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Back to Posting again.</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/back-to-posting-again</link>
      <pubDate>Sat, 19 Apr 2008 00:43:46 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2008/04/19/back-to-posting-again/</guid>
      <description><![CDATA[I have been busy with my work @ Microsoft.&#160; Just in case you have not hear of what I am working...]]></description>
      <content:encoded><![CDATA[<p>I have been busy with my work @ Microsoft.&#160; Just in case you have not hear of what I am working on.&#160; My team is responsible for the new forums that Expressions is using.&#160; <a title="https://forums.expression.microsoft.com/en/forums" href="https://forums.expression.microsoft.com/en/forums">https://forums.expression.microsoft.com/en/forums</a>&#160; Try it out and let us know what you think.&#160; A future feature that I am working on is the ability for you to consume data from the forums through a web service using WCF.&#160; In the past few weeks, I have been playing around with WCF quite a bit, with traditional ASP.NET, Silverlight 2.0 and with Ajax implementation.&#160; I will as I go along update you with how some of these feature work and some tips.</p>]]></content:encoded>
    </item>
    <item>
      <title>WCF and 404.3 Errors</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/wcf-and-404-3-errors</link>
      <pubDate>Fri, 02 Nov 2007 13:58:24 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2007/11/02/wcf-and-404-3-errors/</guid>
      <description><![CDATA[After building, a WCF service in Windows Server 2003, I thought no big deal, for Windows Server...]]></description>
      <content:encoded><![CDATA[<p>After building, a WCF service in Windows Server 2003, I thought no big deal, for Windows Server 2008.&#xA0; I deployed the service on my Windows Server 2008 machine and started getting 404.3 errors only with my WCF service.&#xA0; After checking that I had all of the necessary dependencies:</p>  <ul>   <li>3.0 Framework </li>    <li>WCF Activation installed      <ul>       <li>This can be found under&#xA0; the 3.0 framework options. Depending on your operating system this could be under different locations.&#xA0; <ul>           <li>Vista&#xA0; : Control Panel -&gt; Program and Features -&gt; Turn on/ off Windows Features -&gt; Microsoft.NET Framework 3.0 </li>            <li>Server 2008 : Server Manager -&gt; Add Features-&gt; .Net Framework 3.0 Features -&gt; WCF Activation </li>         </ul>       </li>     </ul>   </li> </ul>  <p>I kept getting 404.3 errors, so I started examining IIS to make sure that the right stuff is registered.&#xA0; After not finding anything wrong, I started looking at the WCF installation. I found that my WCF services where not installed.&#xA0; You can do the installation manually by running &quot;ServiceModelReg.exe&quot;, which was found at %Windows%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\. </p>  <p>To check status run:    <br />Command: ServiceModelReg -vi     <br />Result: The expected result if &quot;Default Installation&quot; next to the features shown, otherwise the services are not active.&#xA0; </p>  <p>To turn on Services:    <br />Command: ServiceModelReg -i     <br />Result: Installation of WCF services in IIS 7(6)</p>  <p>I was then able to immediately test my service and see that I could get to the WSDL.</p>  <p>Hopefully this fixes your 404.3 issue.</p>  <p>David Waddleton</p>]]></content:encoded>
    </item>
    <item>
      <title>How To: Using Embedded Resources in a Class Library</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/how-to-using-embedded-resources-in-a-class-library</link>
      <pubDate>Fri, 02 Feb 2007 16:46:47 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2007/02/02/how-to-using-embedded-resources-in-a-class-library/</guid>
      <description><![CDATA[I came across the situation, where I needed to use an embedded resource file in a class library...]]></description>
      <content:encoded><![CDATA[<p>I came across the situation, where I needed to use an embedded resource file in a class library file.&nbsp; After spending much time, scratching my head trying to figure out how to get to the embedded resource.&nbsp;&nbsp;&nbsp;This is what I found.&nbsp; </p> <p>First, you will need to use <a href="https://msdn2.microsoft.com/en-us/library/system.reflection.assembly.aspx" target="_blank">System.Reflection.Assembly</a>.&nbsp; There are two important methods that are useful for what we need.&nbsp; <a href="https://msdn2.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcenames.aspx" target="_blank">GetManifestResourceNames</a> and <a href="https://msdn2.microsoft.com/en-us/library/system.reflection.assembly.getmanifestresourcestream.aspx" target="_blank">GetManifestResourceStream</a>.&nbsp; The first method allow you to see what the names of the resources are that are part of your class.</p> <p>&nbsp;Example: To get a list of assemblies in a current class library.</p> <blockquote> <p>string[] resources = Assembly.GetCallingAssembly().GetManifestResourceNames();</p></blockquote> <p>After you know the name of the embedded resource, you can get a Stream for reading the resource using the GetManifestResourceStream method.&nbsp;</p> <p>Second,&nbsp;to read resource files, you can use the &nbsp;<a href="https://msdn2.microsoft.com/en-us/library/system.resources.resourcereader.aspx" target="_blank">System.Resources.ResourceReader</a> class. The <a href="https://msdn2.microsoft.com/en-us/library/f45fce5x(VS.80).aspx" target="_blank">embedded resource</a> file is a .resx resource file.&nbsp; The end result when the class is compiled, you will have the following reference as &lt;Class Name&gt;.&lt;Name of Resource File&gt;.resources.&nbsp; The compiled version automatically turns the resource in to a compiled version with a .resource extension.&nbsp; This can be done manually using the <a href="https://msdn2.microsoft.com/en-us/library/ccec7sz1(VS.80).aspx" target="_blank">ResGen</a> tool. </p> <p>Sample Code:</p> <blockquote> <p>/// &lt;summary&gt;<br>/// Internal member representation of Country List<br>/// &lt;/summary&gt;<br>private static List&lt;KeyValueStruct&gt; countryList; </p> <p>/// &lt;summary&gt;<br>/// Static Constructor, which will load the resource files<br>/// &lt;/summary&gt;<br>static LanguagesCountries()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; countryList = new List&lt;KeyValueStruct&gt;(); </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream("ResourceClass.Countries.resources");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResourceReader rmCountries = new ResourceReader(stream);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PopulateCountries(rmCountries);<br>} </p> <p>private static void PopulateCountries(ResourceReader reader)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (DictionaryEntry entry in reader)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; countryList.Add(new KeyValueStruct(entry.Key.ToString(), entry.Value.ToString()));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>} </p> <p></p></blockquote> <p>KeyValueStruct Structure for holding the values</p> <blockquote> <p>/// &lt;summary&gt;<br>/// Structure to hold the Language Information<br>/// &lt;/summary&gt;<br>public struct KeyValueStruct<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string value;  <p>/// &lt;summary&gt;<br>/// Constructor to load the Language / Value Pairs<br>/// &lt;/summary&gt;<br>/// &lt;param name="key"&gt;Language&lt;/param&gt;<br>/// &lt;param name="value"&gt;language code&lt;/param&gt;<br>public KeyValueStruct(string key, string value)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.key = key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.value = value;<br>}  <p>/// &lt;summary&gt;<br>/// Language property<br>/// &lt;/summary&gt;<br>public string Key<br>{ get { return this.key; } }  <p>/// &lt;summary&gt;<br>/// Value Property<br>/// &lt;/summary&gt;<br>public string Value<br>{ get { return this.value; } }</p> <p>}</p></blockquote> <p>Have fun, let me know if this was helpful.</p> <p>&nbsp;</p> <p>David Waddleton</p> <p> <p>&nbsp;</p> <p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:3f923c9e-dfa2-41a7-80c7-10df0ebd33f1" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="https://technorati.com/tags/Embedded%20Resources" rel="tag">Embedded Resources</a>, <a href="https://technorati.com/tags/Resource%20Files" rel="tag">Resource Files</a>, <a href="https://technorati.com/tags/.NET" rel="tag">.NET</a></div></p> <p></p> <p></p> <p></p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0e57fc83-a114-4731-89c1-e7aadd9fbdd2" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="https://del.icio.us/popular/Resource%20Files" rel="tag">Resource Files</a>, <a href="https://del.icio.us/popular/.NET" rel="tag">.NET</a></div>]]></content:encoded>
    </item>
    <item>
      <title>ASP.NET AJAX 1.0 Released</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/asp-net-ajax-1-0-released</link>
      <pubDate>Thu, 25 Jan 2007 13:47:53 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2007/01/25/asp-net-ajax-1-0-released/</guid>
      <description><![CDATA[I am a bit late, but because of how busy I have been, I forgot to mention that ASP.NET AJAX has been...]]></description>
      <content:encoded><![CDATA[<p>I am a bit late, but because of how busy I have been, I forgot to mention that ASP.NET AJAX has been released. Scott Guthrie has a great post with some great resources about what is new and resources to help you get started. <p>Links: <p><a href="https://weblogs.asp.net/scottgu/archive/2007/01/23/asp-net-ajax-1-0-released.aspx">https://weblogs.asp.net/scottgu/archive/2007/01/23/asp-net-ajax-1-0-released.aspx</a><br><a href="https://weblogs.asp.net/scottgu/archive/2007/01/25/links-to-asp-net-ajax-1-0-resources-and-answers-to-some-common-questions.aspx">https://weblogs.asp.net/scottgu/archive/2007/01/25/links-to-asp-net-ajax-1-0-resources-and-answers-to-some-common-questions.aspx</a> <p>Download the Bits: <p><a href="https://ajax.asp.net/downloads/default.aspx?tabid=47">https://ajax.asp.net/downloads/default.aspx?tabid=47</a> <p>Remember, have lots of fun with this. I think you will enjoy it. <p>David</p>]]></content:encoded>
    </item>
    <item>
      <title>Personal Note: This is my dog!!</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/personal-note-this-is-my-dog</link>
      <pubDate>Mon, 30 Oct 2006 10:50:15 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2006/10/30/personal-note-this-is-my-dog/</guid>
      <description><![CDATA[&nbsp;I say this cartoon, and I said "That is my dog!!".&nbsp;  Link to Get Fuzzy&nbsp;  Technorati...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;I say this cartoon, and I said "That is my dog!!".&nbsp; </p> <p><a href="https://www.dilbert.com/comics/getfuzzy/archive/getfuzzy-20061029.html">Link to Get Fuzzy</a>&nbsp; </p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:745c3551-ecff-4b3a-b223-bc218e57f5d1" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="https://technorati.com/tags/Funny" rel="tag">Funny</a>, <a href="https://technorati.com/tags/Dog" rel="tag">Dog</a>, <a href="https://technorati.com/tags/Pet" rel="tag">Pet</a></div>]]></content:encoded>
    </item>
    <item>
      <title>ASP.NET AJAX Beta / CTP Release</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/asp-net-ajax-beta-ctp-release</link>
      <pubDate>Tue, 24 Oct 2006 16:46:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2006/10/24/asp-net-ajax-beta-ctp-release/</guid>
      <description><![CDATA[&nbsp;The ASP.NET AJAX Beta is now live.&nbsp; This release includes a number of significant...]]></description>
      <content:encoded><![CDATA[<P>&nbsp;The ASP.NET AJAX Beta is now live.&nbsp; This release includes a number of significant changes:</P>
<P>1) An update to <A href="https://www.asp.net/" mce_href="https://www.asp.net/">https://www.asp.net/</A> and <A href="https://ajax.asp.net/" mce_href="https://Ajax.asp.net/">https://Ajax.asp.net/</A> to support the release 
<P>2) A <A href="https://ajax.asp.net/files/AspNet_AJAX_CTP_to_Beta_Whitepaper.aspx" mce_href="https://ajax.asp.net/files/AspNet_AJAX_CTP_to_Beta_Whitepaper.aspx">comprehensive whitepaper</A> detailing changes between the CTP’s and Beta 
<P>3) A simple to follow <A href="https://ajax.asp.net/files/Migration%20Guide.doc" mce_href="https://ajax.asp.net/files/Migration%20Guide.doc">migration guide</A> to help developers 
<P>4) Updated <A href="https://ajax.asp.net/docs/Default.aspx" mce_href="https://ajax.asp.net/docs/Default.aspx">documentation</A> 
<P>5) A revised <A href="https://ajax.asp.net/ajaxtoolkit/" mce_href="https://ajax.asp.net/ajaxtoolkit/">ASP.NET AJAX Control Toolkit</A> 
<P>6) And much, much more 
<P>This release is composed of three parts: 
<P>1) <A href="https://download.microsoft.com/download/3/1/c/31cb8c2d-d6e5-4b5e-ae1c-79724667f7d1/ASPAJAXExtSetup.msi" mce_href="https://download.microsoft.com/download/3/1/c/31cb8c2d-d6e5-4b5e-ae1c-79724667f7d1/ASPAJAXExtSetup.msi">The Beta</A> of the soon to be fully-supported ‘core’ ASP.NET AJAX functionality 
<P>2) A new CTP of <A href="https://download.microsoft.com/download/a/a/9/aa9949bb-58e4-4048-85f3-35ac4ab5cc04/ASPAJAXCTP.msi" mce_href="https://download.microsoft.com/download/a/a/9/aa9949bb-58e4-4048-85f3-35ac4ab5cc04/ASPAJAXCTP.msi">additional functionality</A> that runs on top of the Beta ‘core’ 
<P>3) A new <A href="https://ajax.asp.net/ajaxtoolkit/" mce_href="https://ajax.asp.net/ajaxtoolkit/">ASP.NET AJAX Control Toolkit</A> that runs on top of the Beta ‘core’ and new CTP 
<P><A href="https://ajax.asp.net/Default.aspx" mce_href="https://ajax.asp.net/Default.aspx">Link to ASP.NET AJAX : The Official Microsoft ASP.NET AJAX Site</A> </P>
<P mce_keep="true">&nbsp;</P>
<DIV class=wlWriterSmartContent id=0767317B-992E-4b12-91E0-4F059A8CECA8:dacb591c-9443-4607-9bbc-27e3ef3c0662 contentEditable=false style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">Technorati tags: <A href="https://technorati.com/tags/ASP.NET" rel=tag mce_href="https://technorati.com/tags/ASP.NET">ASP.NET</A>, <A href="https://technorati.com/tags/AJAX" rel=tag mce_href="https://technorati.com/tags/AJAX">AJAX</A>, <A href="https://technorati.com/tags/AJAX%20Beta" rel=tag mce_href="https://technorati.com/tags/AJAX%20Beta">AJAX Beta</A></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Free .NET Framework 3.0 eLearning Clinics</title>
      <link>https://docs.microsoft.com/archive/blogs/davidwaddleton/free-net-framework-3-0-elearning-clinics</link>
      <pubDate>Thu, 12 Oct 2006 10:27:20 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/davidwaddleton/2006/10/12/free-net-framework-3-0-elearning-clinics/</guid>
      <description><![CDATA[Wow, you have got to look at this!!&nbsp; The WPF team is making this training&nbsp;available free...]]></description>
      <content:encoded><![CDATA[<p>Wow, you have got to look at this!!&nbsp; The WPF team is making this training&nbsp;available free till the lauch of .NET Framework 3.0.&nbsp;</p> <p>&nbsp;</p> <p><b>More Context: Collection 5134: Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio® 2005</b> <p>This collection of 3 2-hour premium clinics teaches about the new capabilities provided by the .NET Framework 3.0. These clinics are for experienced Developers and Software Architects who are looking to adopt Microsoft's next generation technology within their solutions. <br>Topics covered within the collection include:  <ul> <li>Windows Presentation Foundation  <li>Windows Workflow Foundation  <li>Windows Communication Foundation </li></ul> <p>Link: <a href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340">https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340</a> <p>&nbsp; <p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:fcbd46eb-d898-456d-ac06-0c7a5f7794bf" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="https://technorati.com/tags/.NET%20Framework%203.0" rel="tag">.NET Framework 3.0</a>, <a href="https://technorati.com/tags/WinFX" rel="tag">WinFX</a>, <a href="https://technorati.com/tags/CardSpaces" rel="tag">CardSpaces</a>, <a href="https://technorati.com/tags/WCF" rel="tag">WCF</a>, <a href="https://technorati.com/tags/Gadgets" rel="tag">Gadgets</a>, <a href="https://technorati.com/tags/Atlas" rel="tag">Atlas</a>, <a href="https://technorati.com/tags/eLearning" rel="tag">eLearning</a>, <a href="https://technorati.com/tags/Training" rel="tag">Training</a></div></p> <p>&nbsp;</p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:c074d9a9-4e27-4dd7-91a3-64185af171a4" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="https://del.icio.us/popular/Gadgets" rel="tag">Gadgets</a>, <a href="https://del.icio.us/popular/WinFX" rel="tag">WinFX</a>, <a href="https://del.icio.us/popular/WCF" rel="tag">WCF</a>, <a href="https://del.icio.us/popular/.NET%20Framework%203.0" rel="tag">.NET Framework 3.0</a></div>]]></content:encoded>
    </item>
  </channel>
</rss>