<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>John&amp;#39;s Brain Dump</title><link>http://community.hydrussoftware.com/blogs/john/default.aspx</link><description>All the technical gyrations I go through to build software, so I don&amp;#39;t forget them and others can benefit from them.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JohnsSqlBrainDump" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Telligent Community Fragment Control URL Resolver Available on CodePlex</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/_7QYIqPP5Rs/telligent-community-fragment-control-url-resolver-available-on-codeplex.aspx</link><pubDate>Thu, 09 Jul 2009 16:53:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:5819</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=5819</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2009/07/09/telligent-community-fragment-control-url-resolver-available-on-codeplex.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ll briefly announce that I&amp;#39;ve created another CodePlex project related to Community Server, or in this case Telligent Community 5.0. This module essentially allows you as a Community Server developer to create ASCX controls for widgets that are tied to a particular theme rather than being tied to the site as a whole. It will allow us at ATGi to contiune our standard Community Server development practice of not touching theme or code files that are distributed by Telligent while still being able to provide clients with fully-customized communities.&lt;/p&gt;
&lt;p&gt;Check out the ATGi Telligent Community Fragment Control URL Resolver (or TC FCUR for short) project on CodePlex at &lt;a href="http://tccontrolurlresolver.codeplex.com/"&gt;http://tccontrolurlresolver.codeplex.com/&lt;/a&gt;. Please let me know what you think and if you find any defects or issues with the code, or if you have changes you would like to contribute to the project.&lt;/p&gt;
&lt;p&gt;You&amp;#39;ll also want to check out &lt;a href="http://telligent.com/communities/technical/community/f/533/p/1057740/1325814.aspx#1325814" target="_blank"&gt;this thread&lt;/a&gt; on telligent.com, where my colleague &lt;a href="http://jeffesp.blogspot.com/" target="_blank"&gt;Jeff Espenschied&lt;/a&gt; dialogues with Telligent&amp;#39;s &lt;a href="http://getben.com/" target="_blank"&gt;Ben Tiedt&lt;/a&gt; about the necessity of this sort of solution. Kudos to Telligent for allowing one of their top guys to interact with users of their project at such an in-depth level.&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=5819" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2009/07/09/telligent-community-fragment-control-url-resolver-available-on-codeplex.aspx</feedburner:origLink></item><item><title>Community Server Video Preview Image Module on CodePlex</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/EMiVuOi8Dyw/community-server-video-preview-image-module-on-codeplex.aspx</link><pubDate>Tue, 30 Jun 2009 20:29:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:5710</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=5710</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2009/06/30/community-server-video-preview-image-module-on-codeplex.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve just created a &lt;a href="http://csvideopreview.codeplex.com/" target="_blank"&gt;CodePlex project&lt;/a&gt; for the Community Server Video Preview module. I&amp;#39;ve made several updates to the module, including support for YouTube video thumbnails and background processing. I&amp;#39;ve also spent quite a bit of time refactoring the code to adhere to SOLID principles, and the project includes several unit tests of the module.&lt;/p&gt;
&lt;p&gt;Download the module, check out the source code, leave me feedback, contribute a patch, and enjoy!&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=5710" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Video/default.aspx">Video</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/MediaGalleries/default.aspx">MediaGalleries</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2009/06/30/community-server-video-preview-image-module-on-codeplex.aspx</feedburner:origLink></item><item><title>Upgrading a Community Server Site to a New Version of the Product</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/iVOVml72dbU/upgrading-a-community-server-site-to-a-new-version-of-the-product.aspx</link><pubDate>Wed, 08 Apr 2009 16:47:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:5159</guid><dc:creator>John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=5159</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2009/04/08/upgrading-a-community-server-site-to-a-new-version-of-the-product.aspx#comments</comments><description>&lt;p&gt;With the recent release of &lt;a class="" href="http://get.communityserver.com/download/"&gt;Community Server 2008.5 SP2&lt;/a&gt;, I&amp;#39;ve heard a lot of questions about how best to upgrade a customized Community Server site to the latest service pack. Therefore, I hope to spell out the method that we at &lt;a class="" href="http://www.atgi.com/"&gt;ATGi&lt;/a&gt;&amp;nbsp;use when upgrading custom sites for our clients.&lt;/p&gt;
&lt;p&gt;When I say &amp;quot;custom sites&amp;quot;, there are really four levels of customization that could be performed in Community Server. Each level involves more complex customization and deeper integration with the Community Server code provided by Telligent. For the purposes of this article, these levels of customization are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Control Panel Customization&lt;/strong&gt;-this is the most basic level of customizing Community Server. You are at this level if the only changes to your application that you have made have been done in the Control Panel. You haven&amp;#39;t changed any of the files that came from Telligent, much less added custom code to the application.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Theme Customization&lt;/strong&gt;-this is the level at which most communities are customized. You are at this level if you have changed HTML/ASPX pages that came with Community Server, moving controls on certain pages, adding controls to show different data on pages, and so forth. A Level 2 customized site doesn&amp;#39;t include any modifications to code provided by Telligent, but may call web services exposed by the application.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Additional Code Customization&lt;/strong&gt;-this is level of most sites built by ATGi. At this level, we have modified the site&amp;#39;s theme by altering ASPX files and creating new ones. We have also created additional .NET assemblies that extend certain controls provided by Telligent, and we have configured the community to use custom providers, modules and so forth. All of this is done, though, without modifying the base Community Server assemblies provided by Telligent.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;SDK Customization&lt;/strong&gt;-at this level of customization, you have cracked open and changed the Community Server SDK, so all the assemblies provided by Telligent are your own custom versions. I don&amp;#39;t recommend this level of customization at all, since you can perform just about any customization that you want at level 3. Many developers dive right into the SDK to customize Community Server, and it works just fine until you get to the stage you&amp;#39;re at right now--trying to upgrade your community to a new version of the product.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Level 1 sites are relatively simple to upgrade. I recommend simply exporting your theme configuration file and using Telligent&amp;#39;s provided upgrade tools. (Make a backup of your site first, of course.) Once the upgrade tool is complete, you shouldn&amp;#39;t need to do much else; the site should &amp;quot;just work&amp;quot; on the new version.&lt;/p&gt;
&lt;p&gt;Level 2 and 3&amp;nbsp;sites are more complex to upgrade, but there is a standard process that I use that makes the operation relatively painless. The process requires performing a &lt;a class="" href="http://en.wikipedia.org/wiki/Merge_(revision_control)"&gt;three-way merge&lt;/a&gt; on all of the site&amp;#39;s theme files. If your community is in a decent source control system (Your community *is* in source control, right?) then the process isn&amp;#39;t difficult to perform. (It&amp;#39;s tedious, sure, but not difficult.) In the event that your community is not source-controlled, I&amp;#39;ll run through the complete process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Get the version of Community Server that your custom community is based on. You may&amp;nbsp;need to search your downloads folder for the original ZIP file, or search &lt;a class="" href="http://get.communityserver.com/download/moredownloads.aspx"&gt;Telligent&amp;#39;s list of all Community Server downloads&lt;/a&gt; for the correct version.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Commit the web project from this original version to your source control system. (If you are already using SCM, then just find the changeset/version number corresponding to this original check-in.) We&amp;#39;re going to refer to this version of the code as the base version.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Create a branch of the base version of your code in your source control system. This branch will be used to store the original Community Server code from Telligent, and you should never write your own code in this branch.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Check out the entire branch and overwrite all the files with those in the latest Community Server service pack. Depending on the source control system that you use, you may need to add or delete certain files. You may also want to rename certain files if it is obvious to you that a new file has largely similar content to an old file that was deleted. Renaming files in this way could help your SCM better merge in your custom theme. Once you&amp;#39;re done overlaying the CS service pack, check in all files in the branch.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;On the main code line (the one you branched from), check out all files and overwrite them with your customized Community Server site. Again, you may need to add, remove, or rename files for the source control system. Once you have made the main code line exactly match your custom site, check it in. (If you are already using SCM, you probably don&amp;#39;t need to do anything in this step. The latest SCM version of your site will work.)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Now, using your source control tool, perform a merge of the service pack branch into your main code line. If you&amp;#39;ve set everything up correctly, your source control system should be smart about presenting you with only conflicts in the upgrade--lines of code that you customized and that were changed by the service pack. You&amp;#39;ll need to examine these conflicts one-by-one and resolve them manually. (This is the tedious part!)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Once you have resolved all merge conflicts, you should have an upgraded version of Community Server that includes your customizations. Make sure that your site is running against the new Community Server assemblies, test it thoroughly, and you should be done!&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;img title="Vendor Branch Merge" style="WIDTH:534px;HEIGHT:140px;" height="140" alt="Vendor Branch Merge" src="http://community.hydrussoftware.com/blogs/john/images/Vendor_Branch_Merge.png" width="534" align="middle" /&gt;&lt;/p&gt;
&lt;p&gt;For level 2 and 3 custom communities, this process should be all that you need to do in order to upgrade your application. With level 3 communities, you will need to verify that your custom code executes properly, of course. I&amp;#39;ve performed upgrades of Community Server sites in which the new version of the product no longer called methods I was depending on, so you need to be wary there. But for the most part, this process will give you an upgraded Community Server site costing you as little time and pain as possible.&lt;/p&gt;
&lt;p&gt;Make sure that you are using a good merge tool. I prefer &lt;a class="" href="http://www.sourcegear.com/diffmerge/"&gt;DiffMerge&lt;/a&gt; and &lt;a class="" href="http://www.perforce.com/perforce/products/merge.html"&gt;P4Merge&lt;/a&gt;, both of which are free.&lt;/p&gt;
&lt;p&gt;Lastly, if you have a level 4 site in which you&amp;#39;ve customized the SDK, you will need to perform the same basic steps outlined here. The only difference is that rather than merging only the web files, you need to merge every file in the SDK. If you&amp;#39;ve made a substantial number of customizations, then you may have a very difficult time reconciling code changes, moved files and so forth between one version of Community Server and the next.&lt;/p&gt;
&lt;p&gt;This pattern is essentially the &amp;quot;Third Party Codeline&amp;quot; configuration management pattern, explained in great detail in &lt;em&gt;&lt;a class="" href="http://www.amazon.com/exec/obidos/tg/detail/-/0201741172/"&gt;Software Configuration Management Patterns&lt;/a&gt;&lt;/em&gt;. I highly recommend this book for learning how to manage your codebase. And if you want to master the ins and outs of Community Server customization, I recommend that you take the &lt;a class="" href="http://www.atgi.com/training.aspx"&gt;Mastering Community Server Class&lt;/a&gt; being offered at ATGi in Columbus, OH on April 27-29, 2009. In the class, you&amp;#39;ll learn about many other considerations and design principles that will help you build a highly customized community that is relatively straightforward to upgrade.&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=5159" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2009/04/08/upgrading-a-community-server-site-to-a-new-version-of-the-product.aspx</feedburner:origLink></item><item><title>Mastering Community Server Training Class is Here</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/8c1rJpLV21U/mastering-community-server-training-class-is-here.aspx</link><pubDate>Fri, 20 Feb 2009 16:41:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:3212</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=3212</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2009/02/20/mastering-community-server-training-class-is-here.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m very pleased to announce that I&amp;#39;ll be one of the instructors of the &amp;quot;Mastering Community Server&amp;quot; class, being held here in Columbus, OH on April 27-29.&amp;nbsp; I&amp;#39;ve been furiously writing lecture materials and lab content, trying to put to ink all that I&amp;#39;ve learned over the last few years about working with the product.&amp;nbsp; I am convinced that this course will be a great help to any Community Server administrator or developer.&amp;nbsp; We&amp;#39;ll be covering all aspects of configuring and extending Community Server, from creating custom themes to adding whole new applications to the platform.&amp;nbsp; We&amp;#39;ll also be dicussing Evolution, Telligent&amp;#39;s behind-the-firewall Community Server solution, and I&amp;#39;m sure that we&amp;#39;ll have some nuggets to share about future versions of Community Server as well.&lt;/p&gt;
&lt;p&gt;We just recently finalized the dates and costs for the course, and registration has been opened.&amp;nbsp; We are offering the full three-day course as well as two different two-day tracks that focus content for administrators or developers.&amp;nbsp; Like I said, if you&amp;#39;re responsible for getting all that you can out of Community Server in your organization, this is the course for you.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.atgi.com/training.aspx"&gt;&lt;img src="http://community.hydrussoftware.com/sitefiles/1000/EmailBadge.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=3212" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2009/02/20/mastering-community-server-training-class-is-here.aspx</feedburner:origLink></item><item><title>Community Server 2008.5 SP1 Sitemap Hotfix</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/71dm-9Wm4rk/community-server-2008-5-sp1-sitemap-hotfix.aspx</link><pubDate>Mon, 22 Dec 2008 15:30:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:1710</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=1710</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2008/12/22/community-server-2008-5-sp1-sitemap-hotfix.aspx#comments</comments><description>&lt;p&gt;Community Server 2008.5 SP1 contains a bug in its creation of sitemaps.&amp;nbsp; This bug has been brought up quite a bit on the &lt;a href="http://dev.communityserver.com/forums/p/504221/638261.aspx"&gt;Community Server forums&lt;/a&gt; and Telligent is aware of it.&amp;nbsp; They have fixed this issue internally, but (last I heard) the fix will only be released with Community Server 2009.&lt;/p&gt;
&lt;p&gt;So in the meantime, you can download the &lt;a href="http://get.communityserver.com/download/cs20085sdk/"&gt;Community Server 2008.5 SP1 SDK&lt;/a&gt;, make the following changes, recompile, and your sitemaps should function properly.&lt;/p&gt;
&lt;p&gt;CommunityServer.Components\Components\CSContext.cs (added &amp;quot;, true&amp;quot;)&lt;br /&gt;Line 734:&amp;nbsp; &lt;code&gt;_applicationType = (ApplicationType)Enum.Parse(typeof(ApplicationType), QueryString[CommonQueryStringProperties.ApplicationType], true);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;CommunityServer.Blogs\Components\WeblogSiteMapIndexBuilder.cs (changed &amp;quot;blog&amp;quot; to &amp;quot;weblog&amp;quot;)&lt;br /&gt;Line 24:&amp;nbsp;&lt;code&gt;string url = UrlBuilder.FormatUrl(&amp;quot;siteMap&amp;quot;, &amp;quot;weblog&amp;quot;, &amp;quot;app&amp;quot;, content.ApplicationKey);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;CommunityServer.MediaGalleries\Components\MediaGallerySiteMapIndexBuilder.cs (changed &amp;quot;media&amp;quot; to &amp;quot;mediagallery&amp;quot;)&lt;br /&gt;Line 25:&amp;nbsp;&lt;code&gt;String url = UrlBuilder.FormatUrl(&amp;quot;siteMap&amp;quot;, &amp;quot;mediagallery&amp;quot;, &amp;quot;app&amp;quot;, gallery.ApplicationKey);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;CommunityServer.Web\sitemap.ashx.cs (changed &amp;quot;blog&amp;quot; to &amp;quot;weblog&amp;quot; and &amp;quot;media&amp;quot; to &amp;quot;mediagallery&amp;quot;)&lt;br /&gt;Line 74:&amp;nbsp;&lt;code&gt;case &amp;quot;weblog&amp;quot;: return GetWeblogWithAccessCheck(context);&lt;/code&gt;&lt;br /&gt;Line 75:&amp;nbsp;&lt;code&gt;case &amp;quot;mediagallery&amp;quot;: return GetMediaGalleryWithAccessCheck(context);&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=1710" width="1" height="1"&gt;</description><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2008/12/22/community-server-2008-5-sp1-sitemap-hotfix.aspx</feedburner:origLink></item><item><title>Community Server Video Preview Module</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/2ic9hRUvM5w/community-server-video-preview-module.aspx</link><pubDate>Thu, 06 Nov 2008 15:29:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:1236</guid><dc:creator>John</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=1236</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2008/11/06/community-server-video-preview-module.aspx#comments</comments><description>&lt;p&gt;I just posted our Community Server Video Preview Module to &lt;a href="http://community.hydrussoftware.com/files/folders/cs/entry1235.aspx"&gt;the downloads area of Hydrus Software&lt;/a&gt;.&amp;nbsp; The module automatically generates thumbnail preview images for videos uploaded to media galleries and as attachments to other posts.&amp;nbsp; The module executes FFmpeg (not included) to read the video file and extract an image, which it stores in Centralized File Storage alongside the video attachment.&amp;nbsp; The preview generation module can create previews for all of the video file formats that are supported by Community Server, including AVI, MOV, SWF, MPEG, WMV, FLV and others.&amp;nbsp; The module is also configurable, allowing site administrators and individual users to specify how long into a video to take preview images.&lt;/p&gt;
&lt;p&gt;I know that a lot of people have wanted this feature in Community Server, so I&amp;#39;m happy that I finally had the time to create it and make it available.&amp;nbsp; You can direct questions about the module (or problems you&amp;#39;re experiencing) here, and I will be glad to try to help you.&lt;/p&gt;
&lt;p&gt;In order to use the module, you must have FFmpeg on your web server.&amp;nbsp; You can download a binary executable of FFmpeg &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=205275&amp;amp;package_id=248632"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m hoping to be able to release some more modules in the future, so check back here for new content.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=1236" width="1" height="1"&gt;</description><enclosure url="http://community.hydrussoftware.com/files/folders/cs/entry1235.aspx" length="18951" type="text/html; charset=utf-8" /><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Video/default.aspx">Video</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/MediaGalleries/default.aspx">MediaGalleries</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2008/11/06/community-server-video-preview-module.aspx</feedburner:origLink></item><item><title>Hotfix: Group pages not displayed in Community Server 2008.5</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/VSI-NujCqmg/hotfix-group-pages-not-displayed-in-community-server-2008-5.aspx</link><pubDate>Mon, 03 Nov 2008 20:17:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:1226</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=1226</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2008/11/03/hotfix-group-pages-not-displayed-in-community-server-2008-5.aspx#comments</comments><description>I have encountered a bug in Community Server 2008.5 and have a hotfix that I thought I would share with the community. The bug is described in this post , and involves the fact that group (hub) pages do not display properly when the accessing user is...(&lt;a href="http://community.hydrussoftware.com/blogs/john/archive/2008/11/03/hotfix-group-pages-not-displayed-in-community-server-2008-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=1226" width="1" height="1"&gt;</description><enclosure url="http://community.hydrussoftware.com/blogs/john/attachment/1226.ashx" length="13089" type="application/x-zip-compressed" /><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2008/11/03/hotfix-group-pages-not-displayed-in-community-server-2008-5.aspx</feedburner:origLink></item><item><title>NDoc 2.0 is (Not Quite) Dead! </title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/FtpjNqQqV7c/ndoc-2-0-is-not-quite-dead.aspx</link><pubDate>Wed, 23 Jul 2008 20:49:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:642</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=642</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2008/07/23/ndoc-2-0-is-not-quite-dead.aspx#comments</comments><description>&lt;p&gt;Many of you were saddened by &lt;a class="" href="http://community.hydrussoftware.com/blogs/john/archive/2006/07/26/ndoc-2-0-is-dead.aspx" target="_blank"&gt;the news&lt;/a&gt; that Kevin Downs quit development on &lt;a class="" href="http://ndoc.sourceforge.net/" target="_blank"&gt;NDoc&lt;/a&gt;, the .NET documentation engine.&amp;nbsp; For those of you who haven&amp;#39;t moved on to &lt;a class="" href="http://www.codeplex.com/Sandcastle" target="_blank"&gt;Sandcastle&lt;/a&gt;, though, there may be hope for you.&amp;nbsp; Kim Christensen has taken up the torch and continued development on the NDoc source under the SourceForge project &lt;a class="" href="http://sourceforge.net/projects/ndoc3/" target="_blank"&gt;NDoc3&lt;/a&gt;.&amp;nbsp; She indicates that a beta version has just been released that supports .NET 2.0.&lt;/p&gt;
&lt;p&gt;I haven&amp;#39;t had a chance to check out this new project yet, but it looks like I&amp;#39;m going to need a documentation engine in the near future.&amp;nbsp; I&amp;#39;ll try NDoc3 for sure and let you know what I think.&amp;nbsp; In the meantime, check out the project yourself and let me know what you think.&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=642" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Tools/default.aspx">Tools</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2008/07/23/ndoc-2-0-is-not-quite-dead.aspx</feedburner:origLink></item><item><title>Community Server 2008 Form Breaking Changes</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/hgssgxsUcSk/community-server-2008-form-breaking-changes.aspx</link><pubDate>Wed, 21 May 2008 19:00:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:613</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=613</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2008/05/21/community-server-2008-form-breaking-changes.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve been charged recently with the task of upgrading several custom &lt;a class="" href="http://communityserver.com/" target="_blank"&gt;Community Server&lt;/a&gt; 2007.1 sites to CS 2008.&amp;nbsp; Most of these upgrades are quick-and-dirty, without all of the effort necessary to fully re-theme these applications.&amp;nbsp; During the upgrades, one problem that I encountered frequently was the issue of changed properties in form classes (classes derived from PreTemplatedWrappedFormBase and WrappedSubFormBase).&amp;nbsp; Most of these forms have properties containing the ID&amp;#39;s of controls in the form.&amp;nbsp; What I found was that from 2007.1 to 2008, several forms had these ID properties removed or renamed, which causes pages that reference them to not function properly.&lt;/p&gt;
&lt;p&gt;So, this post is an attempt to list all of the breaking changes in these ID properties between CS 2007.1 and 2008.&amp;nbsp; I&amp;#39;m not including properties that were added between 2007.1 and 2008, just those that were renamed or removed.&amp;nbsp; If you find any changes that I missed, please let me know and I&amp;#39;ll update the list:&lt;/p&gt;
&lt;p&gt;Oh, and I didn&amp;#39;t include anything from the Control Panel, since it&amp;#39;s been radically changed between versions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CommunityServer.Blogs.Controls.CreateEditWeblogPostForm&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;IsLockedCheckBoxId&lt;/strong&gt; - this property was replaced by the EnableCommentsCheckBox, which has the opposite meaning.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CommunityServer.Controls.SearchForm&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;SectionTreeViewId&lt;/strong&gt; - the ComponentArt.Web.UI.TreeView was completely eliminated from the form.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CommunityServer.Controls.EditUserForm&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;SignatureTextBoxId&lt;/strong&gt; - this was replaced by the SignatureEditorId, which expects to point to an Editor rather than a simple TextBox.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;BioTextBoxId&lt;/strong&gt; - this was replaced by the BioEditorId, which expects to point to an Editor rather than a simple TextBox.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;EnableInkCheckBoxId&lt;/strong&gt; - this was eliminated in 2008.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;ThemeDropDownListId&lt;/strong&gt; - this was eliminated in 2008.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CommunityServer.Discussions.Controls.CreateEditForumPostForm&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;RecipientsTextId&lt;/strong&gt; - this was eliminated in 2008.&amp;nbsp; This text box was only used when creating Private Messages, which became Conversations in CS 2008.&amp;nbsp; If you didn&amp;#39;t have the create/edit post page customized, then you can go ahead and ignore this one.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CommunityServer.Discussions.Controls.ForumPostTreeForm&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;PostTreeViewId&lt;/strong&gt; - this property was replaced by PostTreeId, which expects a Telligent.Glow.Tree rather than a ComponentArt.Web.UI.TreeView.&amp;nbsp; If you don&amp;#39;t fix this then the threaded view of a thread will not work at all.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;PostTreeContextMenuId&lt;/strong&gt; - this property was replaced by PostTreePopupMenuId, which expects a Telligent.Glow.PopupMenu rather than a ComponentArt.Web.UI.Menu.&amp;nbsp; Again, fix this or your threaded view will raise an error.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;That&amp;#39;s all I was able to find.&amp;nbsp; Again, let me know if there is anything missing.&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=613" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Community+Server/default.aspx">Community Server</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2008/05/21/community-server-2008-form-breaking-changes.aspx</feedburner:origLink></item><item><title>Debugging MOSS 2007 Web Parts</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/VqKArhvvG8c/debugging-moss-2007-web-parts.aspx</link><pubDate>Thu, 03 May 2007 19:17:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:50</guid><dc:creator>John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=50</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2007/05/03/debugging-moss-2007-web-parts.aspx#comments</comments><description>&lt;p&gt;Oh, I&amp;#39;ve had a heck of a time trying to debug some custom web parts that I&amp;#39;ve written for our internal portal application.&amp;nbsp; I&amp;#39;m using &lt;a class="" href="http://weblogs.asp.net/jan/archive/2006/12/02/announcing-the-return-of-the-smartpart.aspx" target="_blank"&gt;Jan Tielens&amp;#39; SmartPart v3&lt;/a&gt;, which is an excelent webpart for hosting ASP.NET UserControls.&amp;nbsp; (It even now supports ASP.NET AJAX!)&amp;nbsp; But the problem that I&amp;#39;ve constantly run into with sharepoint is the dreaded &amp;quot;An unexpected error has occurred&amp;quot; issue.&amp;nbsp; It gives no event logging, no trace logging, nothing.&amp;nbsp; It&amp;#39;s a dead end.&lt;/p&gt;
&lt;p&gt;But thanks to &lt;a class="" href="http://blog.thekid.me.uk/archive/2007/02/15/a-solution-to-quot-an-unexpected-error-has-occurred-quot-in-wss-v3.aspx" target="_blank"&gt;Vincent Rothwell&lt;/a&gt;, I finally have an answer.&amp;nbsp; He details the solution to this problem &lt;a class="" href="http://blog.thekid.me.uk/archive/2007/02/15/a-solution-to-quot-an-unexpected-error-has-occurred-quot-in-wss-v3.aspx" target="_blank"&gt;here&lt;/a&gt;, and the answer is to simply change a single attribute in your web.config:&amp;nbsp; &lt;/p&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#a31515"&gt;SafeMode&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;MaxControls&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;200&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;CallStack&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#2a2a2a"&gt;to&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#a31515"&gt;SafeMode&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;MaxControls&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;200&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;CallStack&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;You will also need to set custom errors to &amp;#39;Off&amp;#39;&amp;nbsp;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;font size="2"&gt;&lt;font color="#a31515"&gt;customErrors&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;mode&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;Off&lt;font color="#000000"&gt;&lt;/font&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This wouldn&amp;#39;t be appropriate for a production portal, but for testing and debugging, it&amp;#39;s a lifesaver.&amp;nbsp; Thanks Vincent for this; you&amp;#39;ve saved me from a huge headache!&lt;/p&gt;&lt;/span&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=50" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Diagnostics/default.aspx">Diagnostics</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/05/03/debugging-moss-2007-web-parts.aspx</feedburner:origLink></item><item><title>Silverlight = .NET Framework in the Browser</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/rrAeYqg8hco/silverlight-net-framework-in-the-browser.aspx</link><pubDate>Tue, 01 May 2007 20:48:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:49</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=49</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2007/05/01/silverlight-net-framework-in-the-browser.aspx#comments</comments><description>&lt;p&gt;The buzz from MIX07 is that Silverlight is far more than just Microsoft&amp;#39;s answer to &lt;a class="" href="http://www.adobe.com/products/flash/" target="_blank"&gt;Flash&lt;/a&gt;.&amp;nbsp; According to Ray Ozzie, Silverlight will include a CLR engine that is &amp;quot;identical to the desktop CLR&amp;quot;, allowing developers to leverage .NET programming skills for client-side code.&lt;/p&gt;
&lt;p&gt;Check out the article &lt;a class="" href="http://searchvb.techtarget.com/originalContent/0,289142,sid8_gci1253296,00.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=49" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/CLR/default.aspx">CLR</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/05/01/silverlight-net-framework-in-the-browser.aspx</feedburner:origLink></item><item><title>TableAdapterManager in ADO.NET Orcas</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/9ZUZYU5lqmc/tableadaptermanager-in-ado-net-orcas.aspx</link><pubDate>Tue, 01 May 2007 18:50:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:46</guid><dc:creator>John</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=46</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2007/05/01/tableadaptermanager-in-ado-net-orcas.aspx#comments</comments><description>&lt;p&gt;I&amp;nbsp;was reading the &lt;a class="" href="http://blogs.msdn.com/vbteam/archive/2007/03/13/new-data-tools-features-in-visual-studio-orcas.aspx" target="_blank"&gt;Visual Basic Team Blog&lt;/a&gt; a couple of days ago, and stumbled upon a pure gem that will be available in Visual Studio&amp;nbsp;Orcas.&amp;nbsp; From the post:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Keeping track of all inserts, updates and deletes across multiple related datatables and sending those changes in the right order back to the server is not an easy task. How do you make sure that new orders for your customer are added correctly to the system while updating the shipping address of the same customer and deleting one of old orders that had been canceled all at the same time?&lt;/p&gt;
&lt;p&gt;With hierarchical update support in Typed Dataset, all you need to do is to call UpdateAll() method of the new TableAdapterManager component we&amp;#39;ve added. It takes care of collecting all changes and sending them back to the server in the right order. Of course, everything is wrapped into a transaction.&lt;/p&gt;
&lt;p&gt;We believe this would significantly improve the productivity of developers using Typed Dataset to create data applications. You can try this new feature in &lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?familyid=281fcb3d-5e79-4126-b4c0-8db6332de26e&amp;amp;displaylang=en" target="_blank"&gt;March CTP of Visual Studio Orcas&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Apparently, the VS team has finally solved one of the most horrendous problems that comes with using DataSets.&amp;nbsp; Before the TableAdapterManager, you needed to write a great deal of custom code in order to update your database with changes from different DataTables in the proper order.&amp;nbsp; Each time you wanted to commit the changes in your DataSet to the database, your code&amp;nbsp;had to follow a process something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Determine which DataTables in the DataSet have changes. 
&lt;li&gt;Determine how the DataTables are related to one another (parents and children). 
&lt;li&gt;For each table with changes (ordered from parents to children): 
&lt;ol&gt;
&lt;li&gt;Extract the rows inserted/updated&amp;nbsp;in the table. 
&lt;li&gt;Use the table&amp;#39;s DataAdapter to commit the changed rows to the database.&lt;/li&gt;&lt;/ol&gt;
&lt;li&gt;For each table with changes (ordered from children to parents): 
&lt;ol&gt;
&lt;li&gt;Extract the rows deleted from the table. 
&lt;li&gt;Use the table&amp;#39;s DataAdapter to commit the changed rows to the database.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;ADO.NET provided a great deal of infrastructure to make the whole CRUD job easier, but it stopped short of implementing this fundamental algorithm for you.&amp;nbsp; The DataAdapter class took care of managing these operations for a single table, but MS didn&amp;#39;t provide any sort of &amp;quot;meta-DataAdapter&amp;quot; that orchestrated updates for the entire DataSet.&amp;nbsp; Even with the introduction of generated TableAdapters in VS 2005, you still had to write this coordination code by hand.&amp;nbsp; But now, (now meaning whenever Orcas is released) this piece of the data-access puzzle has been solved.&lt;/p&gt;
&lt;p&gt;In case it isn&amp;#39;t clear, note that the TableAdapterManager is not a framework class.&amp;nbsp; It&amp;#39;s a custom class generated for each strongly-typed DataSet in your project.&amp;nbsp; The TableAdapterManager for a DataSet knows about the relationships between the DataTables in the set, and so is able to coordinate update operations for the individual tables.&amp;nbsp; Like the conductor in an orchestra, the TableAdapterManager cues each TableAdapter to step in and play its part at the proper time.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m particularly interested in Microsoft&amp;#39;s answer to this data access problem because I worked a few years back on a solution to the exact same issue.&amp;nbsp; The &lt;a href="http://www.hydrussoftware.com/" target="_blank"&gt;Hydrus DataSet Toolkit&lt;/a&gt; is a data-access framework that also deals with this problem of coordinating DataAdapters to perform update operations in the proper order.&amp;nbsp; The DataSet Toolkit contains a class called the &lt;a href="http://www.hydrussoftware.com/docs/DataSetToolkit.htm#Where_Constraints.htm" target="_blank"&gt;MultiTableDataAdapter&lt;/a&gt; that implements the DataSet update algorithm listed above in a generic fashion.&amp;nbsp; By inspecting the relationships between tables in a DataSet, the MultiTableDataAdapter can determine the order in which insert, update and delete operations should be performed against a database.&lt;/p&gt;
&lt;p&gt;If you want this sort of functionality now, you can &lt;a href="http://forums.hydrussoftware.com/files/default.aspx" target="_blank"&gt;download&lt;/a&gt; and start using the DataSet Toolkit &lt;strong&gt;for free&lt;/strong&gt; from Hydrus Software.&amp;nbsp; It gives you hierarchical updates, as well as hierarchical DataAdapter.Fill operations and dynamic SQL generation.&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.atgi.com/john/archive/2007/05/01/tableadaptermanager-in-ado-net-orcas.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.atgi.com/john/archive/2007/05/01/tableadaptermanager-in-ado-net-orcas.aspx" border="0" alt="" /&gt;&lt;/a&gt; &lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=46" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/DataSet/default.aspx">DataSet</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Hydrus+Software/default.aspx">Hydrus Software</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/05/01/tableadaptermanager-in-ado-net-orcas.aspx</feedburner:origLink></item><item><title>Moving to blogs.hydrussoftware.com (which is here)</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/kjND51Rm7P4/moving-to-blogs-atgi-com-which-is-here.aspx</link><pubDate>Mon, 30 Apr 2007 20:05:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:45</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I&amp;#39;ve been spending some time over the last few months getting up to speed on &lt;a href="http://communityserver.org/"&gt;Community Server&lt;/a&gt;, and with its blogging capabilites, we at&amp;nbsp;&lt;a class="" href="http://www.hydrussoftware.com/" target="_blank"&gt;Hydrus Software&amp;nbsp;&lt;/a&gt;thought it best to move our blogs onto an in-house CS installation. So, all of my future blogging activities will be conducted on &lt;a class="" href="http://community.hydrussoftware.com/blogs/john/default.aspx"&gt;John&amp;#39;s (new) Brain Dump&lt;/a&gt;. But since you&amp;#39;re reading this, you probably already know that.&lt;/p&gt;
&lt;p&gt;(By the way, I was able to update my &lt;a class="" href="http://community.hydrussoftware.com/blogs/john/archive/2006/12/05/escaping-tables-with-css.aspx"&gt;CSS vs. table layout challenge&lt;/a&gt;, in case anyone wants to play with that further.)&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=45" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/CSS/default.aspx">CSS</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/HTML/default.aspx">HTML</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/04/30/moving-to-blogs-atgi-com-which-is-here.aspx</feedburner:origLink></item><item><title>Rapid-Fire Highlights of SD West 2007</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/uIxFaEYuBwE/rapid-fire-highlights-of-sd-west-2007.aspx</link><pubDate>Thu, 29 Mar 2007 17:50:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:44</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=44</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2007/03/29/rapid-fire-highlights-of-sd-west-2007.aspx#comments</comments><description>&lt;p&gt;I returned from a full week of &lt;a href="http://www.sdexpo.com/" target="_blank"&gt;SD West&lt;/a&gt; on Saturday, and it was a fantastic experience! While I don&amp;#39;t have time to dive into all of the details of the trip, I do want to get the highlights out of the way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Juval Lowy and WCF:&lt;/strong&gt; I spent the first full day of the conference listening to &lt;a href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=3&amp;amp;tabid=5#Lowy" target="_blank"&gt;Juval Lowy&lt;/a&gt; discuss Windows Communication Foundation in the .NET Framework 3.0. His explanation of all that you can do with WCF was worth the whole price of the conference! His high-level look at the benefits of service orientation was compelling, and the followign discussions of each facet of WCF gave me a solid picture of each piece of the service framework. And his Dirty Harry impression during the WCF Operations and Calls talk was hilarious! 
&lt;li&gt;&lt;strong&gt;O/R Mapping:&lt;/strong&gt; &lt;a href="http://www.agiledata.org/" target="_blank"&gt;Scott Ambler&lt;/a&gt; gave a talk on object/relational mapping that I thought was very good. He focused on the divide between developers and database professionals, and he stressed that DBA&amp;#39;s need to adopt development methods that the software people have been using for some time now. Since I live as both a developer and DBA, I got some good ideas about how to merge the two disciplines. I also thought it was very interesting that Microsoft has built many of the &amp;quot;agile database techniques&amp;quot; that Scott recommends into &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718807.aspx" target="_blank"&gt;Visual Studio Team System&lt;/a&gt;. (Much of the material from Scott&amp;#39;s talk can be found &lt;a href="http://www.agiledata.org/essays/mappingObjects.html" target="_blank"&gt;here&lt;/a&gt;.) 
&lt;li&gt;&lt;strong&gt;LINQ: &lt;/strong&gt;While there wasn&amp;#39;t as much LINQ at the conference as I would have liked, I did get to see &lt;a href="http://www.lhotka.net/" target="_blank"&gt;Rocky Lhotka&lt;/a&gt; show off the fundamentals of LINQ to SQL, and he briefly discussed LINQ to Entities, or the &lt;a href="http://msdn2.microsoft.com/en-us/library/aa697427(vs.80).aspx" target="_blank"&gt;ADO.NET Entity Framework&lt;/a&gt;. In light of my interest in O/R mapping, the entity framework really caught my attention, and I&amp;#39;ve been experimenting with it ever since I&amp;#39;ve returned home from Santa Clara. 
&lt;li&gt;&lt;strong&gt;Food and Fun:&lt;/strong&gt; If you&amp;#39;re ever in the San Jose area, check out &lt;a href="http://siliconvalley.citysearch.com/profile/1083321/santa_clara_ca/el_camino_mongolian_bbq.html" target="_blank"&gt;El Camino Mongolian BBQ&lt;/a&gt;. I went there with &lt;a href="http://gabe19.blogspot.com/" target="_blank"&gt;Jeff&lt;/a&gt;, and then went back later in the week with &lt;a href="http://www.ericsink.com/" target="_blank"&gt;Eric Sink&lt;/a&gt; and the guys from &lt;a href="http://www.sourcegear.com/" target="_blank"&gt;SourceGear&lt;/a&gt;. (Don&amp;#39;t fill your bowl all the way the first time; leave room for more iterations. You need to practice &amp;quot;agile barbequeing&amp;quot;!) Being from Columbus, I got to watch the &lt;a href="http://images.tsn.ca/images/stories/20070315/osu_78346.jpg" target="_blank"&gt;Ohio State Buckeyes&lt;/a&gt; advance in the tournament with some folks from &lt;a href="http://www.seapine.com/" target="_blank"&gt;Seapine Software&lt;/a&gt;. And finally, I got to go on a whirlwind tour of San Fransisco.&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=44" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/My+Life/default.aspx">My Life</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/WCF/default.aspx">WCF</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/03/29/rapid-fire-highlights-of-sd-west-2007.aspx</feedburner:origLink></item><item><title>Understanding ADO.NET Orcas</title><link>http://feedproxy.google.com/~r/JohnsSqlBrainDump/~3/W81K6Rmv0_o/understanding-ado-net-orcas.aspx</link><pubDate>Wed, 28 Mar 2007 19:50:00 GMT</pubDate><guid isPermaLink="false">c2db566d-197c-4b54-a525-68e4f5f6e16d:43</guid><dc:creator>John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.hydrussoftware.com/blogs/john/rsscomments.aspx?PostID=43</wfw:commentRss><comments>http://community.hydrussoftware.com/blogs/john/archive/2007/03/28/understanding-ado-net-orcas.aspx#comments</comments><description>&lt;p&gt;If you&amp;#39;re like me and enjoy diving into a technology before reading the manual, then you may have experienced confusion when working with the version of ADO.NET Orcas (formerly ADO.NET vNext).&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve been playing with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=CF76FCBA-07AF-47AC-8822-4AD346210670&amp;amp;displaylang=en" target="_blank"&gt;March CTP of Orcas&lt;/a&gt; for a couple of days now, and I finally believe that I have the different ADO.NET features sorted out. I was planning to write my own post to summarize the different new query technologies that are provided, until I found Julie Lerman&amp;#39;s entry on the same topic. I may add details later, but her post is a great place to start.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.thedatafarm.com/blog/CommentView,guid,ccfcbca3-a9df-4e1c-9126-bd727c36851e.aspx"&gt;Sorting out LINQ and Entity Framework for Data Access&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.hydrussoftware.com/aggbug.aspx?PostID=43" width="1" height="1"&gt;</description><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://community.hydrussoftware.com/blogs/john/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://community.hydrussoftware.com/blogs/john/archive/2007/03/28/understanding-ado-net-orcas.aspx</feedburner:origLink></item></channel></rss>
