<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>GoonDocks Blog</title>
    <description>GoonDocks.com Blog Feed</description>
    <link>http://www.goondocks.com/blog.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <item>
      <title>Sitefinity: Refreshing the Cache</title>
      <description>&lt;p&gt;Inside the "Properties" of each Sitefinity page there is an option for enabling "Page Caching".&lt;/p&gt;
&lt;p&gt;&lt;img width="589" height="147" alt="" src="http://www.goondocks.com/Libraries/Blog%20Images/Sitefinity%20Cache%20Option.sflb" /&gt;&lt;/p&gt;
&lt;p&gt;Setting this option to "Yes" will make a dramatic difference in performance. In fact, unless you have a strong reason for not doing so, you should enable page caching on all of your Sitefinity pages. Web pages served from cache do not require expensive database interactions or code processing. Everything is pre-fetched &amp;amp; pre-rendered. The web page will load almost instantly.&lt;/p&gt;
&lt;p&gt;If you need information about enabling, configuring or using caching in Sitefinity, please visit the following resources: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/knowledge-base/kb-article/b1154K-bagb-b1154T-cgb.aspx"&gt;"Optimizing Performance on Sitefinity Web Site" KB Article &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-htthk.aspx"&gt;"Curious About Caching" support thread started by Josef Rogovsky&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;Stale Pages &amp;amp; Old Caches&lt;/h2&gt;
&lt;p&gt;Page caching is great, but it can result in stale web pages. Server-side caching essentially involves creating a "static" version of a "dynamic" web page. In order for page caching to be effective we need a reliable way of expiring and refreshing the cache when the underlying web page has changed.&lt;/p&gt;
&lt;p&gt;Sitefinity automatically refreshes the cache each time pages are edited in the administration. In many cases, this is good enough. However, there are situations when a page is updated outside the Sitefinity administration. One example of this is Blog comments. When a new blog comment is posted, the page has changed outside of the administration. This means the cache is not refreshed and the old web page will continues to be displayed. &lt;/p&gt;
&lt;p&gt;This behaviour is an &lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bcteak.aspx"&gt;acknowledged Sitefinity bug&lt;/a&gt; and will be addressed in a future version of Sitefinity.&lt;/p&gt;
&lt;h2&gt;Updating the Cache with New Blog Comments&lt;/h2&gt;
&lt;p&gt;In the meantime, I discovered a way to refresh the cache when a new Sitefinity blog comment is posted. This work-around involves putting a very small UserControl into your Blog ControlTemplate. This UserControl does not display anything. Instead, it simply checks for a "PostBack". If "IsPostBack" is "true" then we assume a new Blog comment has been posted and the cache is expired &amp;amp; refreshed.&lt;/p&gt;
&lt;p&gt;Here is how to implement this work-around.&lt;/p&gt;
&lt;p&gt;Create &lt;strong&gt;~/Goondocks/UserControls/CacheExpire.ascx&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Control &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Language&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"C#"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;CodeFile&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire.ascx.cs"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Inherits&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"Goondocks_UserControls_CacheExpire"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Create &lt;strong&gt;~/Goondocks/UserControls/CacheExpire.ascx.cs&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web.UI;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; partial &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Goondocks_UserControls_CacheExpire : System.Web.UI.UserControl  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Page_Prerender(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px"&gt; sender, EventArgs e)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: #008000"&gt;// Only evaluate if this is a postback. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (IsPostBack == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: #008000"&gt;// Only evaluate if the form is valid. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (Page.IsValid == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: #008000"&gt;// Expire/Refresh Cache &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                Telerik.DataAccess.CacheDependencyHandler.Current.Notify(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="font-size: 11px"&gt;(Telerik.Cms.ICmsPage));  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Register the "CacheExpire" UserControl in &lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Register &lt;/span&gt;&lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"~/Goondocks/UserControls/CacheExpire.ascx"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;tagname&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;tagprefix&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"uc1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Add the "CacheExpire" UserControl tag in &lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;uc1:CacheExpire &lt;/span&gt;&lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;The &lt;strong&gt;&amp;lt;uc1:CacheExpires&amp;gt;&lt;/strong&gt; tag can be inserted almost anywhere inside the "&lt;strong&gt;ContentViewSingleItem.ascx&lt;/strong&gt;" page.  I personally put this tag inside the &lt;strong&gt;&amp;lt;sfWeb:CommentsList&amp;gt;&lt;/strong&gt; block.&lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-08-18/Sitefinity_Refreshing_the_Cache.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-08-18/Sitefinity_Refreshing_the_Cache.aspx</comments>
      <guid isPermaLink="false">9014bdde-7729-4036-9ff0-e2010cb172f6</guid>
      <pubDate>Mon, 18 Aug 2008 00:39:52 GMT</pubDate>
    </item>
    <item>
      <title>ASP.NET: Supporting Casual Exploration &amp; Discovery</title>
      <description>&lt;p&gt;Many of us who now primarily use ASP.NET began web programming with another technology.  In many cases, our first exposure to a technology didn't come from a job, but rather from personal projects.  The platform we choose was based entirely on what was accessible to us at the time.  &lt;/p&gt;
&lt;p&gt;In my case, this meant PHP, Apache, MySQL and UNIX.  Each of these technologies remains completely free, yet very capable.  Building on this technology doesn't require the purchase of an IDE, server license or database server.  The barrier to entry remains low.  &lt;/p&gt;
&lt;p&gt;I was eventually given the opportunity to learn ASP.NET in a business setting and now prefer ASP.NET as a web development platform.  However, I continue to feel a great affinity towards the &lt;a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)"&gt;LAMP&lt;/a&gt; community that helped me get started.   &lt;/p&gt;
&lt;p&gt;This being said, it can be very hard to be an ASP.NET developer who participates in these communities.  The prevailing thought seems to be that ASP.NET is a completely unreasonable choice.  David Heinemeier Hansson with 37signals.com &lt;a href="http://www.loudthinking.com/arc/000433.html"&gt;put it very bluntly&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px"&gt;
&lt;p&gt;&lt;em&gt;I would have a hard time imagining hiring a programmer who was still on Windows for 37signals. If you don't care enough about your tools to get the best, your burden of proof just got a lot heavier.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have felt this burden and it's easy to become resentful of this mindset.  Once the resentment wears off, I'm simply left saddened.  ASP.NET is a solid web development platform with some respectable advantages.  It's not perfect (nothing is), but it's certainly worth a look.  ASP.NET experience should certainly not be a liability.  &lt;/p&gt;
&lt;p&gt;Recently, Rick Strahl wrote an article entitled "&lt;a href="http://www.west-wind.com/weblog/posts/453551.aspx"&gt;ASP.NET gets no Respect&lt;/a&gt;".  In addressing this topic he writes: &lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px"&gt;
&lt;p&gt;&lt;em&gt;The obvious question is whether all of this should concern us at all, or whether we should just be happy we've found our development platform that we're happy with and go on our merry way. It does matter to some degree to me. Like most people I want to be using a framework that has merit and is popular and maybe more importantly that I don't have to fight to justify my use of everywhere I go.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I very much agree!  But how do you begin to combat the preconceptions many programmers have developed against M$ technologies?  &lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px"&gt;
&lt;p&gt;&lt;em&gt;I think it would also help if Microsoft spent a little more effort to push the Microsoft platform outside of the already converted. Most of the advertising for ASP.NET and .NET and developer tools in general tends to be targeted at .NET developers, which is just preaching to the choir. What's really needed is more of a push to gain the hearts of those outside of the already converted circle. This is not easy and has to be done sensibly and not in the ram rod fashion that Microsoft 'case studies' often employ.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rick is correct, "case studies" certainly won't help.  It will be assumed anything Microsoft writes will be biased.  To even begin to reach this audience we need to first understand the preconceptions that are already in place.  Rick highlights one of them in his article:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px"&gt;
&lt;p&gt;&lt;em&gt;But the problem is one of perception: Micro$oft is by default associated with big dollar signs, and "Microsoft is always after your money".&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This perception is very strong.  It doesn't help that many ASP.NET product tutorials and sample projects assume a full-version of Visual Studio and administrative control of a dedicated web server.  A curious developer is given the immediate impression that it takes several thousand dollars to even evaluate ASP.NET.  As a result, a negative M$ stereotype is reinforced.   &lt;/p&gt;
&lt;p&gt;My most recent experience with this is Silverlight.  I typed "Silverlight Getting Started" into Google and was greeted with the following page:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Silverlight Getting Started Steps" src="http://www.goondocks.com/Libraries/Blog%20Images/silverlight-getting-started.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
Please note, I'm doing this from home on my personal time.  Right off the bat, I'm told I need "Visual Studio 2008".  My home computer doesn't have "Visual Studio 2008".  Do I need to make a purchase for the opportunity to "play" with Silverlight?  I'm not even sure what Silverlight is.  I read somewhere it's simply the M$-version of Flash.   Do I really need it?  Do I care that much?  &lt;/p&gt;
&lt;p&gt;It's important to recognize that many talented programmers refine their skills in their personal time instead of on the company dime.  The LAMP platform &amp;amp; community does a wonderful job of &lt;em&gt;&lt;strong&gt;&lt;span style="text-decoration: underline"&gt;nurturing casual exploration &amp;amp; discovery&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;.  It's no surprise this proves a fertile environment for start-ups.  I understand the loyalty these programmers later feel towards the platform that helped them get started.&lt;/p&gt;
&lt;p&gt;To overcome the stigma being applied to ASP.NET we need to celebrate casual exploration &amp;amp; discovery.  As a community we cannot assume everyone is using Visual Studio, MS-SQL, IE, Office, etc.  When viewed from the outside, this looks like "dogma" &amp;amp; "lock-in" and it's not attractive.  It also becomes prohibitively expensive to get started.&lt;/p&gt;
&lt;p&gt;Engaging these casual programmers may require foregoing immediate profit in favor of cultivating a wider-community.  The value of this community should not be understated though.  These are programmers who are passionate enough about technology that they spend their free-time doing research.  &lt;em&gt;These are good people to have in your corner.&lt;/em&gt;  These programmers will go on to advise the companies they work for.  As a result, the technologies that helped nurture them will infiltrate (and are infiltrating) large organizations.  &lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-08-16/ASP_NET_Supporting_Casual_Exploration_Discovery.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-08-16/ASP_NET_Supporting_Casual_Exploration_Discovery.aspx</comments>
      <guid isPermaLink="false">3dee88a1-0942-482e-a1ad-3c0822234989</guid>
      <pubDate>Sat, 16 Aug 2008 16:54:59 GMT</pubDate>
    </item>
    <item>
      <title>Enabling CAPTCHA for Sitefinity Blog Comments</title>
      <description>&lt;p&gt;&lt;img style="width: 320px; height: 80px" alt="Really Really Annoying CAPTCHA" src="http://www.goondocks.com/Libraries/Blog%20Images/Bad%20Captcha.sflb" align="right" /&gt;Since this blog launched I have deleted hundreds of SPAM comments from my various posts.  These comments say nothing &amp;amp; merely link to some other web site.  In most cases it's obvious the comments were made by an automated SPAM bot.  Cleaning this garbage off my web site has been a weekly chore for me.&lt;br /&gt;
 &lt;br /&gt;
With Sitefinity 3.2 Telerik introduced a new &lt;a href="http://www.sitefinity.com/help/developer-manual/telerik.cms.web.ui-telerik.web.ui.spamprotection.spamprotector.html"&gt;SpamProtector&lt;/a&gt; control.  This control can be placed onto any page or form to provide various SPAM-fighting capabilities.  Two methods of SPAM protection are offered by this control; auto-detection &amp;amp; CAPTCHA.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="400" alt="Control Designer for the SpamProtector Control" src="http://www.goondocks.com/Libraries/Blog%20Images/SpamProtector%20Configure.sflb" /&gt;&lt;br /&gt;
 &lt;br /&gt;
By default the SpamProtector control is enabled on Sitefinity Blog Comments.  However, it is switched into "auto-detection" mode.  This mode uses various techniques &amp;amp; hidden text fields to trick automated bots into revealing themselves.  This is not always effective though and some sophisticated bots will be capable of circumventing detection.&lt;br /&gt;
 &lt;br /&gt;
Which leads us to &lt;a href="http://en.wikipedia.org/wiki/Captcha"&gt;CAPTCHA&lt;/a&gt; detection.  We've all seen (and hate) the garbled images we're shown and asked to reproduce.  As annoying as this is for us, it's even more annoying for SPAM bots.  These images offer a significant hurdle to blog comment SPAM. &lt;/p&gt;
&lt;h2&gt;Adding CAPTCHA in 2 Easy Steps&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;  Load the following file into your favorite editor:&lt;br /&gt;
 &lt;br /&gt;
&lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Find the existing &lt;strong&gt;&amp;lt;sf:spamprotector /&amp;gt;&lt;/strong&gt; tag and add an &lt;strong&gt;EnableCaptcha="true"&lt;/strong&gt; parameter.&lt;br /&gt;
 &lt;br /&gt;
 &lt;img width="566" height="460" alt="CAPTCHA for SpamProtector being enabled" src="http://www.goondocks.com/Libraries/Blog%20Images/Captcha%20Enabled.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
You're done.  Your blogs posts will now be free(er) of blog comment SPAM.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="478" alt="SpamProtector CAPTCHA in action" src="/Libraries/Blog Images/Captcha In Action.sflb" /&gt;&lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-08-10/Enabling_CAPTCHA_for_Sitefinity_Blog_Comments.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-08-10/Enabling_CAPTCHA_for_Sitefinity_Blog_Comments.aspx</comments>
      <guid isPermaLink="false">d35cb051-af41-41fb-a886-436002c985ce</guid>
      <pubDate>Sun, 10 Aug 2008 14:23:29 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity "File Link" Control</title>
      <description>&lt;p&gt;Sitefinity 3.2 comes with an "&lt;a href="http://www.sitefinity.com/help/developer-manual/libraries-api-overview.html"&gt;Images &amp;amp; Documents Module&lt;/a&gt;". This module makes it relatively easy to create &amp;amp; manage libraries of images, files &amp;amp; documents on your web site. I found this module to be a much easier than using FTP to manage my web site's files.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="404" alt="Sitefinity Images &amp;amp; Documents Module" src="http://www.goondocks.com/Libraries/Blog%20Images/images-and-documents-module.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
I now manage all files related to Goondocks through the Images &amp;amp; Documents module. This includes the images that appear on this article, as well as files available for download.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;strong&gt;Caution:&lt;/strong&gt; The Sitefinity "Images &amp;amp; Documents Module" stores files directly in the database. Some hosting packages offer generous hosting disk space but very limited database storage. If you have limited database storage I would caution you about relying heavily on the Images &amp;amp; Documents Module. With frequent use you will find your database size quickly growing. Alternately, Ivan, with Sitefinity, &lt;/em&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bdgdtd.aspx"&gt;&lt;em&gt;posted some options&lt;/em&gt;&lt;/a&gt;&lt;em&gt; for modifying the Images &amp;amp; Documents Module to use alternate storage methods. I have not personally experimented with the customizations he describes.&lt;/em&gt; &lt;/p&gt;
&lt;h2&gt;Using Images &amp;amp; Documents in your Sitefinity Pages&lt;/h2&gt;
&lt;p&gt;Once a file is uploaded via the Images &amp;amp; Documents Module, Sitefinity creates a unique URL for accessing the file. Example:&lt;br /&gt;
 &lt;br /&gt;
&lt;a href="http://www.goondocks.com/Libraries/Havasu%20Falls/before-the-falls.sflb"&gt;http://www.goondocks.com/Libraries/Havasu%20Falls/before-the-falls.sflb&lt;/a&gt;&lt;br /&gt;
 &lt;br /&gt;
You can then insert a static anchor link into your web page to link to the file. &lt;br /&gt;
 &lt;br /&gt;
I wanted to go a step beyond this however. Rather than inserting a static link to my file, I wanted to place a control on my page that could be associated with a previously uploaded file. This method has the following advantages: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The control-to-file association is based on an ID, not a URL. If the file name is changed, the URL will also change. This would cause a static link to break. By using an ID association, the control dynamically updates the URL and the association remains intact. &lt;/li&gt;
    &lt;li&gt;The control can render dynamic information about the underlying file (file type, file size, date created, date modified). You could statically reproduce all of this information in the page, but it would become outdated quickly. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To accomplish this I created a new Sitefinity "File Link" control. This control can be dropped onto any Sitefinity page. Once placed the "File Link" control can be associated with any existing file uploaded via the "Images &amp;amp; Documents Module". When the file association is in-place the control will render a "Download Box". &lt;/p&gt;
&lt;h2&gt;How To Use the "File Link" Control&lt;/h2&gt;
&lt;p&gt;Drop the "File Link" control onto your Sitefinity page.&lt;/p&gt;
&lt;p&gt;&lt;img width="550" height="361" alt="Dropping the Sitefinity File Link Control onto a page." src="http://www.goondocks.com/Libraries/Blog%20Images/file-link-drop.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
Edit the "File Link" control and select the Images &amp;amp; Documents file you wish to associate with the control:&lt;/p&gt;
&lt;p&gt;&lt;img width="550" height="400" alt="Configuring the Sitefinity File Link Control" src="/Libraries/Blog Images/file-link-configure.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
Click "&lt;strong&gt;I'm Done&lt;/strong&gt;" and you now have a fully dynamic download-box for your file:&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="452" alt="Sitefinity File Link Control placed on a page." src="/Libraries/Blog Images/file-link-placed.sflb" /&gt;&lt;/p&gt;
&lt;h2&gt;How To Download&lt;/h2&gt;
&lt;p&gt;This control and its source-code is included in the &lt;a href="/projects/goondocks-sitefinity-controls.aspx"&gt;GoonDocks Sitefinity Controls&lt;/a&gt;.   &lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-08-09/Sitefinity_File_Link_Control.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-08-09/Sitefinity_File_Link_Control.aspx</comments>
      <guid isPermaLink="false">5822db34-a71b-4bbd-8266-e3b5bce9c458</guid>
      <pubDate>Sat, 09 Aug 2008 21:44:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity on a Virtual Private Server</title>
      <description>&lt;br /&gt;
Goondocks.com has now been moved to a &lt;a href="http://www.hostmysite.com/"&gt;HostMySite.com&lt;/a&gt; Virtual Private Server.&lt;br /&gt;
&lt;br /&gt;
Previously I had been using &lt;a href="http://www.discountasp.net/"&gt;DiscountASP.net&lt;/a&gt; to host my Sitefinity-based web site.  For the record, I have absolutely no complaints with DiscountASP.net.  The service was solid and I was a happy customer.&lt;br /&gt;
&lt;br /&gt;
This being said, I wanted a higher-level of control over my web site &amp;amp; hosting environment.  My new VPS hosting platform allows Remote Desktop, multiple web sites, my own IP address, dedicated resources, more file space.  The downside is my new VPS is also more expensive.&lt;br /&gt;
&lt;br /&gt;
The goondocks.com web site has only been running on this new hosting environment for a few days but so far so good.  Based on my limited testing, the web site is running faster &amp;amp; better than ever.&lt;br /&gt;
&lt;br /&gt;
Time will tell.... &lt;br /&gt;
</description>
      <link>http://www.goondocks.com/blog/08-07-21/Sitefinity_on_a_Virtual_Private_Server.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-07-21/Sitefinity_on_a_Virtual_Private_Server.aspx</comments>
      <guid isPermaLink="false">e7887d41-7765-4b8a-9bd9-ba95754ecee0</guid>
      <pubDate>Mon, 21 Jul 2008 13:43:13 GMT</pubDate>
    </item>
    <item>
      <title>Now Upgraded to Sitefinity 3.2</title>
      <description>&lt;p&gt;&lt;img style="width: 200px; height: 221px" alt="Rock Climber" hspace="7" src="http://www.goondocks.com/Libraries/Blog%20Images/rock-climbing.sflb" align="right" border="1" /&gt;I am happy to announce, after a dozen attempts, I have managed to upgrade Goondocks.com to Sitefinity 3.2.&lt;/p&gt;
&lt;p&gt;My advice to anyone attempting to upgrade from 3.1 is to go through this entire process on your local machine before you even &lt;strong&gt;attempt&lt;/strong&gt; to do this in a live setting.  You will discover many controls have changed.  You will also discover the "&lt;em&gt;ControlTemplate&lt;/em&gt;" changes you made for 3.1 may no longer be compatible with the updated 3.2 controls.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here are the steps involved in the Goondocks.com upgrade:&lt;/strong&gt;  &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Backup web files. &lt;/li&gt;
    &lt;li&gt;Backup database. &lt;/li&gt;
    &lt;li&gt;Disable web server &lt;/li&gt;
    &lt;li&gt;FTP "Sitefinity" directory. &lt;/li&gt;
    &lt;li&gt;FTP "bin" directory. &lt;/li&gt;
    &lt;li&gt;FTP "RadControls" directory. &lt;/li&gt;
    &lt;li&gt;FTP updated "web.config" file. &lt;/li&gt;
    &lt;li&gt;Re-add customizations to the "web.config" file. &lt;/li&gt;
    &lt;li&gt;Delete "/bin/RadChart.NET2.dll" file. &lt;/li&gt;
    &lt;li&gt;Delete "/bin/RadEditor.NET2.dll" file. &lt;/li&gt;
    &lt;li&gt;Restart web server. &lt;/li&gt;
    &lt;li&gt;Access web site. &lt;/li&gt;
    &lt;li&gt;Pray. &lt;/li&gt;
    &lt;li&gt;Use wizard, re-setup the connection to the database. &lt;/li&gt;
    &lt;li&gt;Login to Sitefinity with my existing username/password. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point my existing pages were viewable; although my web site looked horrible.  Sitefinity 3.2 introduces several updated versions of the 3.1 controls.  In some cases these updated controls were not compatible with my 3.1 Control Templates.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Work through the web site. &lt;/li&gt;
    &lt;li&gt;Update Master Templates as needed. &lt;/li&gt;
    &lt;li&gt;Update Control Templates as needed. &lt;/li&gt;
    &lt;li&gt;Update stylesheets as needed. &lt;/li&gt;
    &lt;li&gt;Replace old controls as needed.  &lt;/li&gt;
    &lt;li&gt;Replace the Blog posts control. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point all of my Sitefinity 3.1 blog posts were missing.  &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bckhge.aspx"&gt;Execute raw SQL against my database.&lt;/a&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I now had some of my blog posts back.  For some reason approximately 10 blogs posts had simply disappeared.  Upon investigation I discovered these blogs posts were missing an entry in the "&lt;em&gt;sf_CmsContentVersion&lt;/em&gt;" table.&lt;/p&gt;
&lt;p&gt;To fix this I manually inserted the values.  I used the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table as a reference.  Using that table I was able to see which blog posts were missing.  I was also able to get the ID's and dates.&lt;/p&gt;
&lt;p&gt;Each time I inserted a value in this table I needed to find the blog post in the Sitefinity Admin.  The title was blank.  I needed to click "Edit" and then "Save".  This fixed the blog post and made it look normal.&lt;/p&gt;
&lt;p&gt;Ok, I now have all my blog posts, but the search-engine friendly blog URLs are gone.  The URL column in the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table is "NULL".&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Click through the Sitefinity Admin and re-save each blog post. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I then noticed that some of my blog URLs had changed.  For example I had a blog post titled "Sitefinity - Please, No More Modules!".&lt;/p&gt;
&lt;p&gt;The old URL was: /08-04-19/sitefinity_-_please_no_more_modules_.aspx&lt;br /&gt;
The new URL was: /08-04-19/sitefinity_-_please_no_more_modules.aspx&lt;/p&gt;
&lt;p&gt;Notice the missing "underscore" at the end.  To fix this I directly altered the "URL" column in the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table.&lt;/p&gt;
&lt;p&gt;All my blog posts now appear and the existing search-engine friendly URLs are working fine.  However, my "Tags" &amp;amp; "Categories" links aren't working.&lt;/p&gt;
&lt;p&gt;The Blog controls are completely updated.  You need to remove your existing Blogs, Categories, Tags, and Archive controls and drop updated versions of these controls onto your page.  Configure the controls as needed.&lt;/p&gt;
&lt;p&gt;Note the query string values that are being used between these controls.  The "Blog" control defaults to "BlogTagID" while the Tag control defaults to "CntTagID".  These obviously do not match and this will result in your Tag &amp;amp; Category links not working.&lt;/p&gt;
&lt;p&gt;There are still a few lingering problems, but this web site is mostly functioning again.  &lt;/p&gt;
&lt;hr noshade="true" size="1" /&gt;
&lt;p&gt;This upgrade process has been horrid.  I hope to never go through anything like this again.  I pity anyone trying to follow in my foot-steps.  I've already written about this however and Telerik expressed their commitment to addressing these issues in the future.  For the moment, I am going to let the issue drop.&lt;/p&gt;
&lt;p&gt;All of this being said, I'm really enjoying some of the new Sitefinity 3.2 features.  After I've had some time to "live" with these new features I will write-up of Sitefinity 3.2 review.  For now, I'm simply thankful to be through the upgrade.&lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-05-05/Now_Upgraded_to_Sitefinity_3_2.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-05-05/Now_Upgraded_to_Sitefinity_3_2.aspx</comments>
      <guid isPermaLink="false">66dd9195-81c9-49e3-9129-7d1f6da7054d</guid>
      <pubDate>Mon, 05 May 2008 14:41:27 GMT</pubDate>
    </item>
    <item>
      <title>Auto-generate a Web Admin Interface using LINQ to SQL </title>
      <description>&lt;p&gt;&lt;a href="http://www.goondocks.com/images/linqmyadmin-big.png" target="_blank"&gt;&lt;img style="width: 210px; height: 150px" alt="LinqMyAdmin Screen Shot" src="http://www.goondocks.com/Images/linqmyadmin.png" align="right" border="0" /&gt;&lt;/a&gt;Like a lot of web programmers, I spent years using &lt;a href="http://www.php.net/"&gt;PHP &lt;/a&gt;to create web applications. One of the tools I frequently used in conjunction with PHP was &lt;a href="http://www.phpmyadmin.net/home_page/index.php"&gt;phpMyAdmin &lt;/a&gt;. This helpful web-based tool allowed me to easily manage my &lt;a href="http://www.mysql.com/"&gt;MySQL &lt;/a&gt;databases via a web browser. &lt;/p&gt;
&lt;p&gt;After reading Scott Guthrie's "&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx"&gt;Binding UI using the ASP:LinqDataSource Control&lt;/a&gt;" article I became intrigued by the idea of building a &lt;em&gt;phpMyAdmin-like &lt;/em&gt;inteface that could utlize any "LINQ to SQL Class". In theory this seemed simple, in practice it involved a lot &lt;a href="http://en.wikipedia.org/wiki/Reflection_(computer_science)"&gt;&lt;em&gt;reflection &lt;/em&gt;&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;I have a &lt;strong&gt;&lt;em&gt;very&lt;/em&gt;&lt;/strong&gt; early build of this running and have provided the code below. Comments are sprinkled throughout the code and explain what is happening. Here is how to create this:&lt;/p&gt;
&lt;h2&gt;Step 1: Create the ASPX page&lt;/h2&gt;
&lt;p&gt;Create the following ASPX file: &lt;strong&gt;~/admin/LinqMyAdmin.aspx&lt;/strong&gt; &lt;br /&gt;
&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 500px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Page &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"C#"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;CodeFile&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"LinqMyAdmin.aspx.cs"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"LinqMyAdmin"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;html &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;head &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;LinqMyAdmin&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;link &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"./LinqMyAdmin.css"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;rel&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"Stylesheet"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"text/css"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;form &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"form1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"contentwrapper"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"contentcolumn"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:PlaceHolder &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"LinqPlaceHolder"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;EnableViewState&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Visible&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:PlaceHolder&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;h2 &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"TableHeader"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:GridView   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"TableGrid"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: red"&gt;PageSize&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"20"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: red"&gt;AllowPaging&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: red"&gt;AllowSorting&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: red"&gt;EnableViewState&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: red"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: red"&gt;AutoGenerateDeleteButton&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: red"&gt;AutoGenerateEditButton&lt;/span&gt;&lt;span style="font-size: 11px"&gt; = &lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;AlternatingRowStyle &lt;/span&gt;&lt;span style="color: red"&gt;CssClass&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"odd"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;PagerStyle &lt;/span&gt;&lt;span style="color: red"&gt;CssClass&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"pager"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlign&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"Left"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:GridView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"leftcolumn"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;h2&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;Tables&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;h2&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:Repeater &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"TablesRepeater"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;EnableViewState&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"false"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;ul&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-weight: bold; color: black"&gt;a&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"linqmyadmin.aspx?table=&amp;lt;%# Container.DataItem %&amp;gt;"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%# Container.DataItem %&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-weight: bold; color: black"&gt;a&lt;/span&gt;&lt;span style="font-size: 11px"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                    &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;ul&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;asp:Repeater&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;          &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 11px"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;Step 2: Create the Code-Behind &lt;/h2&gt;
&lt;p&gt;Create the following code-behind file: &lt;strong&gt;~/admin/LinqMyAdmin.aspx.cs&lt;/strong&gt; &lt;br /&gt;
&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 500px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Collections;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Data.Linq.Mapping;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Reflection;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Text.RegularExpressions;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web.UI.WebControls;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; partial &lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;span style="font-size: 11px"&gt; LinqMyAdmin : System.Web.UI.Page  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;// -------------------------------------------------------------------- &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;// CHANGE THE FOLLOWING LINE TO REFER TO YOUR LinqDataContext CLASS &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;// -------------------------------------------------------------------- &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; LinqSQLClass = &lt;/span&gt;&lt;span style="color: blue"&gt;"Intranet.Data.NorthwindDataContext, App_Code"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    Type LinqContextType;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// Executed upon Page Load. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Page_Load(&lt;/span&gt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px"&gt; sender, EventArgs e)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TableName = Request.QueryString[&lt;/span&gt;&lt;span style="color: blue"&gt;"table"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;];  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// Display a list of available Tables &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        LinqContextType = System.Type.GetType(LinqSQLClass, &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        TablesRepeater.DataSource = GetAllTables(LinqContextType);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        TablesRepeater.DataBind();  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// If we have a "table" value in our querystring, then display the table. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (TableName != &lt;/span&gt;&lt;span style="color: blue"&gt;null&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            DisplayTable(TableName);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// Gets a list of all Tables found in a LinqContext &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;param name="_Type"&amp;gt;The LinqContext Type&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;returns&amp;gt;list of table names.&amp;lt;/returns&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;private&lt;/span&gt;&lt;span style="font-size: 11px"&gt; ArrayList GetAllTables(Type _Type)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        ArrayList _Tables = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; ArrayList();  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        PropertyInfo[] _AllProperties = _Type.GetProperties();  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (var _PropInfo &lt;/span&gt;&lt;span style="color: blue"&gt;in&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _AllProperties)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: green"&gt;// LINQ Tables are Generics and will be declared as type System.Data.Linq.Table&amp;lt;TEntity&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: green"&gt;// I worked a long time to create a generic Table Type comparison.  Nothing worked. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: green"&gt;// So I ended up just converting the type to a string and searching for a pattern.  :( &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (Regex.IsMatch(_PropInfo.PropertyType.ToString(), @&lt;/span&gt;&lt;span style="color: blue"&gt;"^System.Data.Linq.Table"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;) == &lt;/span&gt;&lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                _Tables.Add(_PropInfo.Name);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _Tables;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;///  &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;param name="TableName"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;private&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;span style="font-size: 11px"&gt; DisplayTable(&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TableName)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// We don't know the ContextTypeName or TableName in advance. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// Create a LinqDataSource control dynamically and add it to our &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// PlaceHolder control. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        LinqDataSource _linqSource = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; LinqDataSource();  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        _linqSource.ID = &lt;span style="color: blue"&gt;"LinqSource"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        _linqSource.ContextTypeName = LinqSQLClass;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        _linqSource.TableName = TableName;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        _linqSource.EnableInsert = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        _linqSource.EnableDelete = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        _linqSource.EnableUpdate = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        _linqSource.AutoPage = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        _linqSource.AutoSort = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        _linqSource.EnableViewState = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        LinqPlaceHolder.Controls.Add(_linqSource);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// Fetch the Primary Keys associated with the current table. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt;[] _ID = GetTableKeys(TableName);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// Attach our LinqDataSource to our DataGrid. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        TableHeader.InnerHtml = &lt;span style="color: blue"&gt;"Table -&amp;amp;gt; "&lt;/span&gt;&lt;span style="font-size: 11px"&gt; + TableName;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        TableGrid.DataSourceID = &lt;span style="color: blue"&gt;"LinqSource"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        TableGrid.DataKeyNames = _ID;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// Get all properties associated with our LinqContext Table. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;param name="TableName"&amp;gt;The TableName&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;returns&amp;gt;The properties associated with this table&amp;lt;/returns&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;private&lt;/span&gt;&lt;span style="font-size: 11px"&gt; PropertyInfo[] GetTableProperties(&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TableName)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// All we currently have is a table name; "Customers" (plural). &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// What we want to fetch are the properties associated with the &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// model that is associated with our table.  That model, example, &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// would be called "Customer" (singular).   &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// We find the connection between table &amp;amp; model by using &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// reflection on the table.  The table will have have a type &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: green"&gt;// of System.Data.Linq.Table&amp;lt;Customer&amp;gt;.  The "Customer Type" is  &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// retrievable by looking at the Generic Arguments. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;//  Clear as mud?  Great, let's get started... &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        Type _TableType = LinqContextType.GetProperty(TableName).PropertyType;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        Type _ModelType;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        PropertyInfo[] _ReturnProperties = &lt;span style="color: blue"&gt;null&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// Make sure we have a Generic Type &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (_TableType.IsGenericType == &lt;/span&gt;&lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            Type[] _GenericArgs = _TableType.GetGenericArguments();  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: green"&gt;// Ensure that we have some Generic Arguments &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (_GenericArgs.Length &amp;gt; 0)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: green"&gt;// Our model type will be the first Arg. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                _ModelType = _GenericArgs[0];  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                _ReturnProperties = _ModelType.GetProperties();  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _ReturnProperties;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// Gets the primary keys associated with a LinqContext Table &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: green"&gt;/// &amp;lt;param name="TableName"&amp;gt;The Table Name&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: green"&gt;/// &amp;lt;returns&amp;gt;A list of primary keys associated with the table&amp;lt;/returns&amp;gt; &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;private&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt;[] GetTableKeys(&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TableName)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        ArrayList _Keys = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; ArrayList();  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;bool&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _PrimaryKey = &lt;/span&gt;&lt;span style="color: blue"&gt;false&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: green"&gt;// Loop through each property found in the Table Model. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: blue"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (var _PropInfo &lt;/span&gt;&lt;span style="color: blue"&gt;in&lt;/span&gt;&lt;span style="font-size: 11px"&gt; GetTableProperties(TableName))  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: green"&gt;// The Primary Key flag is a Custom Attribute.  Get all Custom Attributes &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: green"&gt;// associated with the current property. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            Object[] _Objects = _PropInfo.GetCustomAttributes(&lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: green"&gt;// Reset our Primary Key flag. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            _PrimaryKey = &lt;span style="color: blue"&gt;false&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: green"&gt;// Loop through each Custom Attribute. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            &lt;span style="color: blue"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (Object _obj &lt;/span&gt;&lt;span style="color: blue"&gt;in&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _Objects)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                &lt;span style="color: green"&gt;// The attribute we're looking for is "System.Data.Linq.Mapping.ColumnAttribute" &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (_obj.GetType() == &lt;/span&gt;&lt;span style="color: blue"&gt;typeof&lt;/span&gt;&lt;span style="font-size: 11px"&gt;(System.Data.Linq.Mapping.ColumnAttribute))  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                    ColumnAttribute _Attribute = (ColumnAttribute)_obj;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (_Attribute.IsPrimaryKey == &lt;/span&gt;&lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                        _PrimaryKey = &lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;                }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (_PrimaryKey == &lt;/span&gt;&lt;span style="color: blue"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;                _Keys.Add(_PropInfo.Name);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;            }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px"&gt; _Keys.ToArray(&lt;/span&gt;&lt;span style="color: blue"&gt;typeof&lt;/span&gt;&lt;span style="font-size: 11px"&gt;(&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)) &lt;/span&gt;&lt;span style="color: blue"&gt;as&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt;[];  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;Step 3: Create the CSS&lt;/h2&gt;
&lt;p&gt;Create the following CSS file: &lt;strong&gt;~/admin/LinqMyAdmin.css&lt;/strong&gt; &lt;br /&gt;
&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 500px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;body {  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;background-color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;#FFFFFF&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;font-size&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;15px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;#conten&lt;/span&gt;&lt;span style="font-size: 11px"&gt;twrapper {  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;float&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;width&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: 100%;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;#conten&lt;/span&gt;&lt;span style="font-size: 11px"&gt;tcolumn {  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;margin-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;200px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;; &lt;/span&gt;&lt;span style="color: green"&gt;/*Set left margin to LeftColumnWidth*/&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;#leftco&lt;/span&gt;&lt;span style="font-size: 11px"&gt;lumn {  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;float&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;width&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;200px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;; &lt;/span&gt;&lt;span style="color: green"&gt;/*Width of left column*/&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;margin-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: -100%;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: blue"&gt;#leftco&lt;/span&gt;&lt;span style="font-size: 11px"&gt;lumn ul {  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;list-style&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;none&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;margin-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;5px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;padding-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;0px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;#leftco&lt;/span&gt;&lt;span style="font-size: 11px"&gt;lumn li   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;padding-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;0px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;margin-left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;0px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;margin-bottom&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;5px&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;h2 {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;font-family&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;Arial&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;a:link {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#d42945&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-decoration&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;none&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}     &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;a:visited {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#d42945&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-decoration&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;none&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}         &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;a:hover, a:focus {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#f03b58&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-decoration&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;underline&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;table {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;solid&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;1px&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;#e5eff8&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;th {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;font-weight&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;normal&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;background&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#f4f9fe&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-align&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;center&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;solid&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;1px&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;#e5eff8&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;padding&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:.3em 1em;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;thead th {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;background&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#f4f9fe&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-align&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;center&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:&lt;/span&gt;&lt;span style="color: blue"&gt;#66a3d3&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}     &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;tr.odd td {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;background&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;#f7fbff&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;td {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;color&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;#678197&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;solid&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;1px&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;#e5eff8&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;padding&lt;/span&gt;&lt;span style="font-size: 11px"&gt;:.3em 1em;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: red"&gt;text-align&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;center&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;.pager td {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: red"&gt;text-align&lt;/span&gt;&lt;span style="font-size: 11px"&gt;: &lt;/span&gt;&lt;span style="color: blue"&gt;left&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p &gt;Access the page via the following URL: &lt;strong&gt;http://localhost/admin/LinqMyAdmin.aspx &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I would not recommend putting this code on a public server or using production data. If you do happen to upload this code to a public server, be sure to secure access to the page. &lt;/p&gt;
&lt;p&gt;Obviously this web application lacks a lot of functionality. What is amazing though is how much functionality I am getting "for free" because of ASP.NET's LinqDataSource and GridView. However, I find that I'm reaching the limit of what I can do dynamically. For example, weaving automatic foreign-key mappings into this code is proving difficult. I have some thoughts on how to overcome this, but have not yet found the time to experiment. &lt;/p&gt;
&lt;p&gt;I hope to provide more updates later. Feedback is welcome! &lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-04-30/Auto-generate_a_Web_Admin_Interface_using_LINQ_to_SQL.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-04-30/Auto-generate_a_Web_Admin_Interface_using_LINQ_to_SQL.aspx</comments>
      <guid isPermaLink="false">d559917e-19d0-4193-9027-9dacce92bb8c</guid>
      <pubDate>Wed, 30 Apr 2008 03:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Using ASP.NET Page Trace to View LINQ SQL</title>
      <description>&lt;p&gt;I've often found it helpful to use &lt;a href="http://msdn2.microsoft.com/en-us/library/94c55d08.aspx"&gt;ASP.NET's Page Trace&lt;/a&gt; to identify performance problems with my dynamic pages. However, database queries are frequently responsible for performance problems.  Because of this, I began displaying SQL via the Page Trace. This let me see the SQL being executed to render a page. It also let me see how much time the SQL was taking to execute.&lt;/p&gt;
&lt;p&gt;As I began toying with LINQ to SQL I found myself missing the ability to see the SQL being executed to render my pages. As it turns out, it's very easy to have LINQ output the SQL to Page Trace. &lt;/p&gt;
&lt;p&gt;First you need to create a VERY simple class that implements the "System.IO.TextWriter" class.  You can place this file in &lt;strong&gt;~/App_Code/TraceTextWriter.cs&lt;/strong&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 244px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TraceTextWriter : System.IO.TextWriter  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;override&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Text.Encoding Encoding  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;span style="font-size: 11px"&gt; { &lt;/span&gt;&lt;span style="color: blue"&gt;throw&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; NotImplementedException(); }  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;override&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;span style="font-size: 11px"&gt; WriteLine(&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px"&gt; value)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        HttpContext.Current.Trace.Write(&lt;span style="color: blue"&gt;"LINQ"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;, value);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: blue"&gt;base&lt;/span&gt;&lt;span style="font-size: 11px"&gt;.WriteLine(value);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    }  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;Next you need to set the LINQ &lt;strong&gt;Log&lt;/strong&gt; property to use an instance of this new &lt;strong&gt;TraceTextWriter&lt;/strong&gt; class:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 90px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;TestDataContext db = &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TestDataContext();  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;TraceTextWriter traceWriter = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px"&gt; TraceTextWriter();  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;db.Log = traceWriter;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="color: green"&gt;// Execute your LINQ queries here.&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;Now set &lt;strong&gt;Trace&lt;/strong&gt; to "&lt;strong&gt;true&lt;/strong&gt;" inside your "aspx" page:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; width: 100%; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; height: 34px; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Page &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"C#"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Trace&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;Piece of cake! Now load the page in a web browser and you will see details similar to the following:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.goondocks.com/Images/linq-trace.png" /&gt;&lt;br /&gt;
Now you can easily see the SQL LINQ is generating to render your pages; you can also use this information to troubleshoot performance problems.  When you are done troubleshooting, simply set &lt;strong&gt;Trace&lt;/strong&gt; to "&lt;strong&gt;false"&lt;/strong&gt; to disable this output.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mattberseth.com/blog/2008/01/profiling_linq_to_sql_using_th.html"&gt;Thanks to Matt Berseth for posting information that helped me get started on this.&lt;/a&gt;&lt;/p&gt;
</description>
      <link>http://www.goondocks.com/blog/08-04-22/Using_ASP_NET_Page_Trace_to_View_LINQ_SQL.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.goondocks.com/blog/08-04-22/Using_ASP_NET_Page_Trace_to_View_LINQ_SQL.aspx</comments>
      <guid isPermaLink="false">47ab60e2-1be3-4ed3-92cf-da5017ab2525</guid>
      <pubDate>Tue, 22 Apr 2008 03:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity - Please, No More Modules!</title>
      <description>&lt;p&gt;I have been struggling off &amp;amp; on for weeks to upgrade this web site to Sitefinity 3.2.  If you're interested read about this journey &lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bckhge.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bdbkbc.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please understand, I'm a big fan of Sitefinity and Telerik.  But with regard to Sitefinity 3.2 it's fairly obvious little thought or testing was devoted to "upgrading", specifically with regard to Sitefinity modules.  Significant changes were introduced into the Blogs module, as well as other modules.  The net effect: upgrading to 3.2 caused my data to disappear.  Telerik later released raw SQL that could be run to retrieve Blog data.  But, as of this writing I'm still encountering problems. &lt;/p&gt;
&lt;p&gt;After repeatedly trying and failing to upgrade, I couldn't help but think; didn't anyone try this?  I won't sugar-coat this.  This is annoying.  It's never fun to encounter obvious bugs or invest hours with little or no progress.  However, as the weeks went by I came to a strange conclusion:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;The problem is only partially that Telerik didn't do sufficient testing on the Blogs module.  The real problem is that a Blogs module was ever created in the first place!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At this point you're probably saying "Huh?".  Stay with me.   Consider the following 2 statements:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Sitefinity solves your problems. &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;Sitefinity empowers you to easily solve your own problems.&lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where do you personally stand on this?  Consider your answer carefully because it will heavily impact the future of this product.  &lt;/p&gt;
&lt;h2&gt;Consider the evidence!&lt;/h2&gt;
&lt;p&gt;Leaving aside the question of philosophical choice, let's look at the current evidence:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;We have modules relating to Forums, Newsletters, Events, Polls, Blogs and Photos. &lt;/li&gt;
    &lt;li&gt;We do not have API documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am fearful we (Telerik &amp;amp; the Sitefinity Community) knowingly or unknowingly are going down the "give us fish" path rather than the "teach us to fish" path.  This is evidenced by the countless forum posts asking for "canned" solutions to problems.  (Yes, I have been guilty of this too.)  It is also evidenced by Telerik's willingness to devote time &amp;amp; effort to satisfy these requests in lieu of providing documentation or core API examples.  &lt;/p&gt;
&lt;p&gt;Consider the following diagram:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.goondocks.com/Images/sitefinity-diagrahm.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;When you look at the diagram above, you begin to understand the trouble Telerik is encountering.  In each of these "green" areas Sitefinity is competing with long-standing niche products.  People, like myself, have started to become reliant on these Sitefinity modules.   However, instead of being happy Sitefnity provides a plug-n-play Blog control, we instead become unhappy that it lacks WordPress features.  Instead of being happy we have a Forums module, we instead wonder why it lacks the features of CommunityServer.&lt;/p&gt;
&lt;p&gt;Telerik is now involved in the relentless race for features in not just one area, but many areas.  Sitefinity is on the path to becoming a "jack of all trades" and "master of none".  In pursuing this path, Telerik is spreading themselves too thin, making sloppy mistakes and neglecting the things that matter.  Please understand, I don't object to having a Forums module or a Blogs module; rather I object to having these extra features at the cost of core features or documentation.  Those are the things that would empower ME to extend the product in personalized &amp;amp; innovative ways. &lt;/p&gt;
&lt;h2&gt;Staying True to your Roots!&lt;/h2&gt;
&lt;p&gt;I can't speak for everyone, but what drew me to Sitefinity was its incredible page editor &amp;amp; control editor.  I was amazed the first time I created my own ASP.NET User Control and was able to drag, drop &amp;amp; customize it in a web browser.  Sitefinity seemed to be part CMS, part Framework and fully supported the ASP.NET techniques &amp;amp; methods I was already familiar with.  Amazing!  The possibilities seemed limitless.  &lt;/p&gt;
&lt;p&gt;I also loved how the "Site Map" made the organization of my web site self-evident.  However, all of these new modules pull content out of my "Site Map" to be managed and organized separately.  In some cases this is appropriate, in other cases it's not.  For example, it remains impossible to create a "File" node inside my "Site Map".  Sitefinity remains limited to "Pages" and "Links".  &lt;a href="http://www.goondocks.com/blog/07-11-30/top_5_most_wanted_sitefinity_features.aspx"&gt;Those are your only 2 options and this limits my ability to extend Sitefinity in the way I choose.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article is being typed into a Sitefinity Blog Module.  This Module doesn't use the core Sitefinity 