﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Eric Kemp</title>
    <description />
    <link>http://monk.thelonio.us/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.3.0.29</generator>
<atom:link href="http://monk.thelonio.us/syndication.axd" rel="self" type="application/rss+xml" /><language>en-US</language><blogChannel:blogRoll>http://monk.thelonio.us/opml.axd</blogChannel:blogRoll><blogChannel:blink>http://monk.thelonio.us/syndication.axd</blogChannel:blink><dc:creator>Eric Kemp</dc:creator><dc:title>Eric Kemp</dc:title><item><title>SubSonic 2.1 Final</title><description>&lt;p&gt;Today’s a day that many of you thought would never come: the final release of SubSonic 2.1! It’s been a long time coming, and we hope you’ll feel it has been worth the wait. For those following the SVN revisions, this release is built on Revision 472.&lt;/p&gt;  &lt;p&gt;On a side note, CodePlex has been experiencing some problems with Work Items over the past few days, so please be patient if you’re submitting bug reports. Recent problems aside, we know that the bug submission process is less than ideal, something that we will be remedying very shortly.&lt;/p&gt;  &lt;p&gt;But enough of my blabbing… Go download it already!&lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=14067"&gt;Download SubSonic 2.1 Final&lt;/a&gt;&lt;/strong&gt;&amp;#160;&lt;/h2&gt;  &lt;p&gt;&lt;strong&gt;FIxes and Changes from Release Candidate 1&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15065"&gt;Work Item 15065&lt;/a&gt; - SubStage Should Provide Option to Control Code Generation Output Directory   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15768"&gt;Work Item 15768&lt;/a&gt; - DB.Update() Doesn't Allow Multiple SETs   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16936"&gt;Work Item 16936&lt;/a&gt; - Aggregates With Where (Not Having) Creates bad SQL (testcase included)   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16949"&gt;Work Item 16949&lt;/a&gt; - VB_StructsTemplate.aspx Does Not Properly Escape &amp;quot;Select&amp;quot; Methods   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17075"&gt;Work Item 17075&lt;/a&gt; - DB.Save() Doesn't Insert Records if the PrimaryKey is not AutoIncrement   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17075"&gt;Work Item 17075&lt;/a&gt; - ANSISqlGenerator.PAGING_SQL Contains Incorrect Paging Definition   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=11763"&gt;Work Item 11763&lt;/a&gt; - SqlDataProvider.GetSelectSql() - ORDER BY Columns Must be in SelectList When IsDistinct=true   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16983"&gt;Work Item 16983&lt;/a&gt; - Various Turkish Character Set String Comparison Issues   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17031"&gt;Work Item 17031&lt;/a&gt; - Generated VB.Net DB.Save() and DB.Get() Signatures are Invalid   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17041"&gt;Work Item 17041&lt;/a&gt; - SubStage Doesn't Save Generated Code Language   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17073"&gt;Work Item 17073&lt;/a&gt; - PrimaryKey Methods Not Generated When Using SQLite Data Provider   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17157"&gt;Work Item 17157&lt;/a&gt; - Patch for Improved Implementation of SqlQuery.GetRecordCount()   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17173"&gt;Work Item 17173&lt;/a&gt; - Stored Procedures Dropping QueryCommand Parameters   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17187"&gt;Work Item 17187&lt;/a&gt; - DB.Save() Doesn't Insert Records When Primary Key is UNIQUEIDENTIFIER   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17245"&gt;Work Item 17245&lt;/a&gt; - Aggregates With Where (Not Having) Creates bad SQL (testcase included) - Updated Patch   &lt;br /&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=17264"&gt;Work Item 17264&lt;/a&gt; - Namespace Parsing Error in CodeRunner.GetTypeName()   </description><link>http://monk.thelonio.us/post/SubSonic-21-Final.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/SubSonic-21-Final.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=f4696d0c-5783-4403-8589-2536ab706743</guid><pubDate>Tue, 08 Jul 2008 19:22:00 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=f4696d0c-5783-4403-8589-2536ab706743</pingback:target><slash:comments>11</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=f4696d0c-5783-4403-8589-2536ab706743</trackback:ping><wfw:comment>http://monk.thelonio.us/post/SubSonic-21-Final.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=f4696d0c-5783-4403-8589-2536ab706743</wfw:commentRss></item><item><title>HigherFox</title><description>&lt;p&gt;&lt;strong&gt;UPDATE 6/25/2008: &lt;em&gt;I’ve made a few changes to the source code and updated the executable to deal with some compatibility issues with extensions that don’t employ the “em:” prefix in install.rdf. Also, the application should no longer leave the temp directory around if it fails to patch the file. If you’re encountering either of these issue, please try the newer version. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you follow the beta and RC builds of Firefox, you’ve probably found that at least a few of your add-ons from previous versions are blocked with the new builds, ostensibly for compatibility reasons. If you’ve done a bit more digging, you’ve probably found that &lt;a href="http://johnbokma.com/mexit/2006/11/03/updating-an-extension.html"&gt;there are some ways around this blocking&lt;/a&gt;, which involve opening the .xpi extension files (which is really just a renamed .zip), making changes to the maxVersion attribute of install.rdf, and updating the archive. &lt;/p&gt;  &lt;p&gt;While this isn’t a terribly difficult process, it can be a bit of pain if you have a number of .xpi’s that you want to update. To make this process a bit easier, I threw together a quick application that makes the process a good deal simpler, by allowing you to drop target one or more xpi files and have them automatically patched up to whatever version you specify. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://monk.thelonio.us/image.axd?picture=WindowsLiveWriter/HigherFox_11921/image_2.png" rel="shadowbox"&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="219" alt="image" src="http://monk.thelonio.us/image.axd?picture=WindowsLiveWriter/HigherFox_11921/image_thumb.png" width="170" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;HigherFox simply extracts the contents of the .xpi files that are dragged onto it, updates the &lt;strong&gt;maxVersion&lt;/strong&gt; attribute for Firefox (it doesn’t touch values for Flock, Netscape, etc.), and then repacks all the components into a new archive that is save at the source location as &amp;lt;original_xpi_name&amp;gt;_patched.xpi.&lt;/p&gt;  &lt;p&gt;It goes without saying that patching .xpi files is a poor alternative to installing official releases from the author. Moreover, there is no guarantee that the extension will actually be compatible in the version of Firefox you’re running. However, if you’re still waiting for your favorite plug-in to be officially updated, this might just be the hack that you’re looking for.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://www.codeplex.com/DotNetZip"&gt;DotNetZip&lt;/a&gt; for their nice little ZIP library that let me keep this in a single executable!&lt;/p&gt;  &lt;h3&gt;&lt;a href="content/HigherFox.zip"&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;h4&gt;&lt;a href="http://monk.thelonio.us/content/HigherFox.zip"&gt;Download HigherFox&lt;/a&gt; (26K)&lt;/h4&gt;  &lt;h4&gt;&lt;a href="http://monk.thelonio.us/content/HigherFoxSource.zip"&gt;Download HigherFox Source Code&lt;/a&gt; (58K)&lt;/h4&gt;</description><link>http://monk.thelonio.us/post/HigherFox.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/HigherFox.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=e82dc3bd-d030-4f2b-a77a-5fde8bfdb69e</guid><pubDate>Mon, 09 Jun 2008 19:59:30 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=e82dc3bd-d030-4f2b-a77a-5fde8bfdb69e</pingback:target><slash:comments>6</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=e82dc3bd-d030-4f2b-a77a-5fde8bfdb69e</trackback:ping><wfw:comment>http://monk.thelonio.us/post/HigherFox.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=e82dc3bd-d030-4f2b-a77a-5fde8bfdb69e</wfw:commentRss></item><item><title>Important Notice Regarding Early SubSonic 2.1 RC 1 Downloads</title><description>&lt;p&gt;This morning, forum member &lt;a href="http://forums.subsonicproject.com/members/JonasHi/default.aspx"&gt;JonasHi&lt;/a&gt; alerted us to a serious bug in the RC 1 SqlServer and SqlServerCE data providers. Due a stupid mistake, I introduced a bug in Revision 444 of the source code which could have the effect of truncating fields at 50 characters when performing commit operations. I have since fixed the issue, committed a fix to SVN (Revision 448), and updated the installer and source distributions on CodePlex. &lt;/p&gt; &lt;p&gt;However, if you downloaded the RC 1 installer or source code before 10:05 AM EST on June 5th, please download an &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=12460"&gt;updated version&lt;/a&gt;. You may notice that both the source and installer files are about 1.5 MB smaller than before, resulting from the unrelated removal of an unused archive in the Dependencies folder.&lt;/p&gt; &lt;p&gt;We apologize for any inconvenience this may have caused. I will be adding some additional unit tests to cover this and other related scenarios to reduce the likelihood of similar bugs in the future...&lt;/p&gt;</description><link>http://monk.thelonio.us/post/Important-Notice-Regarding-Early-SubSonic-21-RC-1-Downloads.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Important-Notice-Regarding-Early-SubSonic-21-RC-1-Downloads.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=8170a12c-8184-41b6-a689-8d245d8cdc32</guid><pubDate>Thu, 05 Jun 2008 10:10:55 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=8170a12c-8184-41b6-a689-8d245d8cdc32</pingback:target><slash:comments>1</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=8170a12c-8184-41b6-a689-8d245d8cdc32</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Important-Notice-Regarding-Early-SubSonic-21-RC-1-Downloads.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=8170a12c-8184-41b6-a689-8d245d8cdc32</wfw:commentRss></item><item><title>SubSonic 2.1 Release Candidate 1</title><description>&lt;h4&gt;&lt;strong&gt;UPDATE: A potentially serious bug was discovered in RC 1. It is now fixed, but please &lt;/strong&gt;&lt;a href="http://monk.thelonio.us/post/Important-Notice-Regarding-Early-SubSonic-21-RC-1-Downloads.aspx"&gt;&lt;strong&gt;see this post&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; if you downloaded either the installer or source code prior to 10:05 AM EST on June 5th.&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Another release, another blog post... Man, I'm slacking...&lt;/p&gt; &lt;p&gt;We're pleased to announce the &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=12460"&gt;immediate availability&lt;/a&gt; of Release Candidate 1 of SubSonic 2.1. Nothing new or snazzy to announce in this build, just a good old pile of bug fixes for a code base that's looking pretty damn solid.&lt;/p&gt; &lt;p&gt;If you've been holding off on the 2.1 releases until things calmed down a bit, I urge you to finally take the plunge. This release is far more solid than the production 2.0.3 build. So dig in, and as always, keep the &lt;a href="http://www.codeplex.com/subsonic/WorkItem/List.aspx"&gt;Work Items&lt;/a&gt; coming!&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=12460"&gt;Download SubSonic 2.1 Release Candidate 1&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt; &lt;h5&gt;&lt;br&gt;Release Candidate 1 Fix/Feature List&lt;/h5&gt; &lt;h5&gt;&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=11506"&gt;Work Item 11506&lt;/a&gt; - InvalidCastException When Using Nullable Boolean Types in MySql (Re-Opened)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=12946"&gt;Work Item 12946&lt;/a&gt; - SQL Stored Procedures Don't Set Scale or Precision&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15073"&gt;Work Item 15073&lt;/a&gt; - QuickTable Incorrectly Calculates Paging Values&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15074"&gt;Work Item 15074&lt;/a&gt; - SQLiteDataProvider Paging is Off by One&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15075"&gt;Work Item 15075&lt;/a&gt; - MySqlDataProvider Paging is Off by One&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15169"&gt;Work Item 15169&lt;/a&gt; - MarkOld() Should Set IsLoaded="true"&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15844"&gt;Work Item 15844&lt;/a&gt; - Wrong Database Object Name Generated in SqlQuery Select Clause When Using Table Joins&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16101"&gt;Work Item 16101&lt;/a&gt; - MySqlInnoDBProvider - Alias Casings do not Match in MANY_TO_MANY_CHECK_ALL and MANY_TO_MANY_FOREIGN_MAP_&lt;wbr&gt;&lt;/wbr&gt;ALL&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16110"&gt;Work Item 16110&lt;/a&gt; - SqlQuery Aggregate Operations Inappropriately Replace WHERE with HAVING&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16165"&gt;Work Item 16165&lt;/a&gt; - CS_ViewTemplate.ascx Does Not Escape SchemaName Setting&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16180"&gt;Work Item 16180&lt;/a&gt; - Template Generated Code Wraps When "namespace" is Encountered Anywhere in Output&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16181"&gt;Work Item 16181&lt;/a&gt; - QuickTable Improperly Qualifies Column Names When Where Clauses are Used&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16257"&gt;Work Item 16257&lt;/a&gt; - VB_ClassTemplate.aspx Hasn't Been Updated to Reflect RepositoryRecord Changes&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16259"&gt;Work Item 16259&lt;/a&gt; - ExecuteJoinedDataSet() Fails When Using an AddBetweenAnd Clause&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16326"&gt;Work Item 16326&lt;/a&gt; - SqlQuery.Paged() Does Not Work With MySql Provider&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16392"&gt;Work Item 16392&lt;/a&gt; - QuickTable Improperly Prefixes WHERE Clauses&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16424"&gt;Work Item 16424&lt;/a&gt; - Nullable INT Values Not Properly Converted With Oracle Provider&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16429"&gt;Work Item 16429&lt;/a&gt; - DB.Update() Does Not Set IsLoaded="true" (Duplicate)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16463"&gt;Work Item 16463&lt;/a&gt; - SqlQuery InnerJoin Results in Null Reference Exception When DataProvider is not Set&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16468"&gt;Work Item 16468&lt;/a&gt; - DB.Update() Does Not Set IsLoaded="true"&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16513"&gt;Work Item 16513&lt;/a&gt; - Empty or Null Lists Passed to Query.IN() Should Return No Results&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16532"&gt;Work Item 16532&lt;/a&gt; - ExecuteSingle&amp;lt;T&amp;gt;() Leaves Open DataReader&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16547"&gt;Work Item 16547&lt;/a&gt; - Where() Operations on Collections Do Not Support Comparision.In and Comparison.NotIn&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16548"&gt;Work Item 16548&lt;/a&gt; - ExecuteJoinedDataSet() Improperly Performs JOINs on 1-to-1 PK/FK Relations&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16573"&gt;Work Item 16573&lt;/a&gt; - DB.Update() Does Not Set IsLoaded="true" (Patch)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16746"&gt;Work Item 16746&lt;/a&gt; - SqlDataProvider/SqlCEProv&lt;wbr&gt;&lt;/wbr&gt;ider Incorrectly Translates VARCHAR Types to NVARCHAR&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16847"&gt;Work Item 16847&lt;/a&gt; - DB.Insert(of T)(Row) Always Returns "0"&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16859"&gt;Work Item 16859&lt;/a&gt; - Turkish Character-Set Issue in TableSchema.SetValue()&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16869"&gt;Work Item 16869&lt;/a&gt; - Globalization Issues in SugarTests.Numbers_IsNume&lt;wbr&gt;&lt;/wbr&gt;ric() and QueryTest.Query_OR_Betwee&lt;wbr&gt;&lt;/wbr&gt;n()&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16871"&gt;Work Item 16871&lt;/a&gt; - Query Fails When Used With More Than One OrderBy Condition&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16874"&gt;Work Item 16874&lt;/a&gt; - DataProvider.GetDbCommand&lt;wbr&gt;&lt;/wbr&gt;() Doesn't Convert QueryParameter to DBParameter Before Adding to DBCommand Collection&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16894"&gt;Work Item 16894&lt;/a&gt; - SQL Stored Procedures Don't Set Scale or Precision (Duplicate)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16897"&gt;Work Item 16897&lt;/a&gt; - Query.NOT_IN Is Not Handled Properly&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16898"&gt;Work Item 16898&lt;/a&gt; - ExecuteJoinedDataSet Fails When Using IN/NotIN Clause&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=12090"&gt;Work Item 12090&lt;/a&gt; - Migration (Rails)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16226"&gt;Work Item 16226&lt;/a&gt; - 2.1 Feature Request: ExecuteAsSingle&lt;/h5&gt;</description><link>http://monk.thelonio.us/post/SubSonic-21-Release-Candidate-1.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/SubSonic-21-Release-Candidate-1.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=08d59e8e-898c-4d11-afc0-f10fa2b01130</guid><pubDate>Wed, 04 Jun 2008 18:44:45 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=08d59e8e-898c-4d11-afc0-f10fa2b01130</pingback:target><slash:comments>8</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=08d59e8e-898c-4d11-afc0-f10fa2b01130</trackback:ping><wfw:comment>http://monk.thelonio.us/post/SubSonic-21-Release-Candidate-1.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=08d59e8e-898c-4d11-afc0-f10fa2b01130</wfw:commentRss></item><item><title>SubSonic 2.1 Beta 3</title><description>&lt;p&gt;Well, these days it looks like it takes a new SubSonic release to get me to actually write a blog post, so I guess I'll have to crank up the rate that we're putting out builds! In any event, I'm happy to announce the third beta of SubSonic 2.1 is &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=11591"&gt;now available on CodePlex&lt;/a&gt;. There are a ton of fixes in this release, and it's starting to look very solid, with core already faster and more solid that 2.0.3. The next milestone will be Release Candidate 1, which we will get to GA as fast we can, especially since we're very anxious to start taking advantage of the C# 3.0 language features.&lt;/p&gt; &lt;p&gt;While we're not officially announcing it, so as to properly set initial expectations, this release features the first migration capabilities, which &lt;a href="http://blog.wekeroad.com/"&gt;Rob&lt;/a&gt; and &lt;a href="http://a-simian-mind.blogspot.com/"&gt;Shawn&lt;/a&gt; have poured a ton of work in to. But if you're brave, and feeling like diving into the code, have at it.&lt;/p&gt; &lt;p&gt;I'd also like to extend a special thanks to &lt;a href="http://forums.subsonicproject.com/members/yitzchok.aspx"&gt;Yitzchok&lt;/a&gt; AKA &lt;a href="http://forums.subsonicproject.com/members/yitzchok.aspx"&gt;adminjew&lt;/a&gt; for his contributions to this release. Yitzchok not only contributed a really nice patch that allows providers to be loaded from external assemblies, he has truly embraced the often thankless job of moderating the forums, answering question after question while people like me get to do the fun stuff. Thank you Yitzchok!&lt;/p&gt; &lt;h5&gt;&lt;strong&gt;&lt;font size="4"&gt;Beta 3 Fix/Feature List&lt;/font&gt;&lt;/strong&gt;&lt;/h5&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=11714"&gt;Work Item 11714&lt;/a&gt; - DataReader Exceptions Can Cause Memory Leaks&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=11740"&gt;Work Item 11740&lt;/a&gt; - Scripting May Fail With Large Schemas/Data Sets&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=11933"&gt;Work Item 11933&lt;/a&gt; - Views Are Not Properly Paged Under Sql Server 2000&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=12375"&gt;Work Item 12375&lt;/a&gt; - WriteTrace Throws Security Exception with Medium Trust&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=12786"&gt;Work Item 12786&lt;/a&gt; - WriteTrace Throws Security Exception with Medium Trust (Duplicate)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=14660"&gt;Work Item 14660&lt;/a&gt; - LoadFromPost() Doesn't Fill DirtyColumn Collection&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15015"&gt;Work Item 15015&lt;/a&gt; - SubStage Generates Controller Classes when RepositoryRecord is Used&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15469"&gt;Work Item 15469&lt;/a&gt; - SqlQuery Doesn't Perform Type Conversion on Constraint Values&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15590"&gt;Work Item 15590&lt;/a&gt; - SqlDataProvider.ExecuteTr&lt;wbr&gt;&lt;/wbr&gt;ansaction must not close the DB connection&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15594"&gt;Work Item 15594&lt;/a&gt; - SqlQuery: Aggregates/Tables not aliased properly when using OracleDataProvider&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15596"&gt;Work Item 15596&lt;/a&gt; - SubSonic.Sugar.Dates Incorrectly Identifies Weekends/Weekdays&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15605"&gt;Work Item 15605&lt;/a&gt; - RepositoryRecord not Tagged as [Serializable]&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15649"&gt;Work Item 15649&lt;/a&gt; - ExecuteJoinedDataSet Throws Exception When Sorting on Joined Column&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15652"&gt;Work Item 15652&lt;/a&gt; - SqlQuery.CloseExpression(&lt;wbr&gt;&lt;/wbr&gt;) Causes "Index was Outside the Bounds of the Array" Error&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15660"&gt;Work Item 15660&lt;/a&gt; - Many-to-Many Save[ClassName]Map Delete Methods Do Not Specify Data Type When Adding Parameters&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15661"&gt;Work Item 15661&lt;/a&gt; - Many-to-Many Save[ClassName]Map Methods Use Incorrect Data Type for Foreign Primary Key&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15688"&gt;Work Item 15688&lt;/a&gt; - ANSISqlGenerator.Generate&lt;wbr&gt;&lt;/wbr&gt;Constraints() Does Not Set DbType&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15689"&gt;Work Item 15689&lt;/a&gt; - SqlQuery.SetConstraintPar&lt;wbr&gt;&lt;/wbr&gt;ams() Loses Parameters When Building "NotIn" Queries&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15696"&gt;Work Item 15696&lt;/a&gt; - Sql2005Generator.BuildPag&lt;wbr&gt;&lt;/wbr&gt;edSelectStatement() Sets Incorrect Paging Boundaries&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15725"&gt;Work Item 15725&lt;/a&gt; - AndExpression/OrExpressio&lt;wbr&gt;&lt;/wbr&gt;n Improperly Identify a Closed Expression as Open&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15747"&gt;Work Item 15747&lt;/a&gt; - Object Names in the Form "[Name]TypeCode" are Inexplicably Changed to "[Name]Type"&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15753"&gt;Work Item 15753&lt;/a&gt; - SqlCE Provider Incorrectly Set CommandTimeout Value&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15771"&gt;Work Item 15771&lt;/a&gt; - ExecuteJoinedDataSet Incorrectly Inserts "PK" Column When First Ordinal Column Is a Foreign Key&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15779"&gt;Work Item 15779&lt;/a&gt; - SqlQuery: INNER JOIN with WHERE Clause Can Result in 'Ambiguous column name' Error&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15795"&gt;Work Item 15795&lt;/a&gt; - Repository Get[ObjectName] Methods Leave Open Data Readers&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15796"&gt;Work Item 15796&lt;/a&gt; - SubStage Doesn't Fully Refresh Database Schema&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15799"&gt;Work Item 15799&lt;/a&gt; - SqlQuery: INNER JOIN with WHERE Clause Can Result in 'Ambiguous column name' Error (Duplicate)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15823"&gt;Work Item 15823&lt;/a&gt; - SqlQuery.SetConstraintPar&lt;wbr&gt;&lt;/wbr&gt;ams() Loses Parameters When Building "NotIn" Queries (Duplicate)&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15841"&gt;Work Item 15841&lt;/a&gt; - ANSISqlGenerator.Generate&lt;wbr&gt;&lt;/wbr&gt;CommandLine() Does Not Properly Comma-Delimit Select List When Passing Literal Values&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15939"&gt;Work Item 15939&lt;/a&gt; - GetValue&amp;lt;T&amp;gt;(string columnName) in TableSchema May Fail with Non-Nullable GUIDs&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=16012"&gt;Work Item 16012&lt;/a&gt; - SqlQuery.ExecuteScalar() Does Not Properly Handle/Cast DBNull Return Values&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15616"&gt;Work Item 15616&lt;/a&gt; - Option to Use UTC Format for Managed DateTime Fields&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15978"&gt;Work Item 15978&lt;/a&gt; - Patch to Support DataProviders in External Assemblies&lt;br&gt;&lt;a href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=15996"&gt;Work Item 15996&lt;/a&gt; - DataProvider.GetSPList() Should Return Stored Procedures in Alphabetical Order&lt;br&gt; &lt;p&gt;Thanks again to everyone who contributed to this release. Keep the feedback and &lt;a href="http://www.codeplex.com/subsonic/WorkItem/List.aspx"&gt;Work Items&lt;/a&gt; coming!&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=11591"&gt;Download SubSonic 2.1 Beta 3&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;</description><link>http://monk.thelonio.us/post/SubSonic-21-Beta-3.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/SubSonic-21-Beta-3.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=1fa14e23-d900-41c4-b47d-0f4a1adf6e3f</guid><pubDate>Thu, 10 Apr 2008 18:55:25 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=1fa14e23-d900-41c4-b47d-0f4a1adf6e3f</pingback:target><slash:comments>7</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=1fa14e23-d900-41c4-b47d-0f4a1adf6e3f</trackback:ping><wfw:comment>http://monk.thelonio.us/post/SubSonic-21-Beta-3.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=1fa14e23-d900-41c4-b47d-0f4a1adf6e3f</wfw:commentRss></item><item><title>SubSonic 2.1 Beta 2</title><description>&lt;p&gt;I'm pleased to announce the immediate availability of SubSonic 2.1 Beta 2. This release contains a significant collection of bug fixes for issues in SubSonic 2.1 Beta 1, as well as some minor functional enhancements to the new SqlQuery engine and SubStage.&lt;/p&gt; &lt;p&gt;Thanks to everyone who contributed to this release through patches, bug reports, and feedback... Keep 'em coming! &lt;/p&gt; &lt;p&gt;Finally, I'd like to extend a special thanks to &lt;a href="http://a-simian-mind.blogspot.com/"&gt;Shawn Oster&lt;/a&gt;, who jumped on board recently and made some great contributions to this release, including making sure that all our unit tests are finally green :)&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=5636"&gt;Download SubSonic 2.1 Beta 2&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;</description><link>http://monk.thelonio.us/post/SubSonic-21-Beta-2.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/SubSonic-21-Beta-2.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=0bc8215e-cff8-4098-834b-ebddae5eb473</guid><pubDate>Tue, 11 Mar 2008 14:21:31 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=0bc8215e-cff8-4098-834b-ebddae5eb473</pingback:target><slash:comments>2</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=0bc8215e-cff8-4098-834b-ebddae5eb473</trackback:ping><wfw:comment>http://monk.thelonio.us/post/SubSonic-21-Beta-2.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=0bc8215e-cff8-4098-834b-ebddae5eb473</wfw:commentRss></item><item><title>Scaffold Enhancements in SubSonic 2.1</title><description>&lt;p&gt;
Among the new features coming in SubSonic 2.1 are some incremental enhancements to the existing Scaffold functionality. Here&amp;#39;s a quick rundown of these changes, which you can see in the current beta release &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=subsonic&amp;amp;ReleaseId=10395"&gt;posted on CodePlex&lt;/a&gt;
&lt;/p&gt;
 
&lt;p&gt;
&lt;strong&gt;ScaffoldType&lt;br /&gt;
&lt;/strong&gt;With the 2.1, AutoScaffold is now a &amp;quot;mode&amp;quot; of the existing scaffold control. This mode is enabled by setting the &lt;strong&gt;ScaffoldType&lt;/strong&gt; property to &amp;quot;&lt;strong&gt;Auto&lt;/strong&gt;&amp;quot;, as opposed to the default &amp;quot;&lt;strong&gt;Normal&lt;/strong&gt;&amp;quot; setting. When set to &lt;strong&gt;Auto&lt;/strong&gt;, the scaffold adds two new drop down menus above the grid, allowing a provider and class to be selected. In all other ways, the behavior is functionally identical to a scaffold running in &amp;quot;Normal&amp;quot; mode.
&lt;/p&gt;
 
&lt;p&gt;
&lt;strong&gt;AutoGenerateManyToMany&lt;br /&gt;
&lt;/strong&gt;This boolean value, set to &lt;strong&gt;true&lt;/strong&gt; by default will automatically cause the scaffold to generate many to many mapping controls at the bottom of the edit form for any tables identified as Many to Many. The functionality uses the mechanism that identifies tables as M2M at code generation time. If this mode is too &amp;quot;permissive&amp;quot; in identifications techniques, you can still specify tables using the existing ManyToManyMap approach.
&lt;/p&gt;
 
&lt;p&gt;
&lt;strong&gt;UseEmbeddedStyles&lt;br /&gt;
&lt;/strong&gt;Without styles applied, the scaffolds can look a bit, well, ugly. However, when the &lt;strong&gt;UseEmbeddedStyles&lt;/strong&gt; property is set to &lt;strong&gt;true&lt;/strong&gt;, the scaffolds will now dynamically emit a style sheet at runtime which should make them look a bit more presentable out of the box.
&lt;/p&gt;
 
&lt;p&gt;
&lt;strong&gt;DropDownCssClass, CheckBoxCssClass&lt;br /&gt;
&lt;/strong&gt;It is now possible to specify a CSS class to be used for DropDown and CheckBox controls when they appear in the scaffolds.
&lt;/p&gt;
 
&lt;p&gt;
&lt;strong&gt;Updated CRUD Operations&lt;br /&gt;
&lt;/strong&gt;Prior to 2.1, the scaffold used inline SQL construction to perform all CRUD operations. As of this release, these operations are now performed using the new query engine. Ideally, this should reduce the number of issues encountered when using the scaffolds across different provider types.
&lt;/p&gt;
 
&lt;p&gt;
As always, we welcome your feedback...
&lt;/p&gt;
</description><link>http://monk.thelonio.us/post/Scaffold-Enhancements-in-SubSonic-21.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Scaffold-Enhancements-in-SubSonic-21.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=3cc47b78-028a-4b3f-88a9-fa38a9640437</guid><pubDate>Fri, 08 Feb 2008 08:48:00 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=3cc47b78-028a-4b3f-88a9-fa38a9640437</pingback:target><slash:comments>5</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=3cc47b78-028a-4b3f-88a9-fa38a9640437</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Scaffold-Enhancements-in-SubSonic-21.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=3cc47b78-028a-4b3f-88a9-fa38a9640437</wfw:commentRss></item><item><title>SubStage WebCast</title><description>&lt;p&gt;
Consider it a beta, just like the application... &lt;img src="/admin/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif" border="0" alt="Tongue out" title="Tongue out" /&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size="4"&gt;&lt;a rel="shadowbox;width=800;height=618" href="http://monk.thelonio.us/content/substage1/SubStage.swf" title="SubStage Webcast" class="option"&gt;View Webcast&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
</description><link>http://monk.thelonio.us/post/SubStage-WebCast.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/SubStage-WebCast.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=26fb6544-b000-4e6d-a413-eaa6461859ac</guid><pubDate>Mon, 04 Feb 2008 17:39:00 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=26fb6544-b000-4e6d-a413-eaa6461859ac</pingback:target><slash:comments>15</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=26fb6544-b000-4e6d-a413-eaa6461859ac</trackback:ping><wfw:comment>http://monk.thelonio.us/post/SubStage-WebCast.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=26fb6544-b000-4e6d-a413-eaa6461859ac</wfw:commentRss></item><item><title>Documentation: It's my Cilice</title><description>&lt;p&gt;I've neglected SubSonic for far too long, and it's time for me to wear my &lt;a href="http://en.wikipedia.org/wiki/Hairshirt"&gt;hair shirt&lt;/a&gt;. For me, this means making a concerted effort on something that ranks with being forced to watch holiday jewelry ads, Clockwork Orange style, on my list of least favorite things to do. However, it's the best way to pay my penance, and bring some substance to Rob's &lt;a href="http://blog.wekeroad.com/2007/11/30/subsonic-api-is-documented/"&gt;recent assertion&lt;/a&gt;. :)&lt;/p&gt;  &lt;p&gt;I've started the process with Revision 217, which is, for the most part a code formatting clean up. Given the fact that properly documenting the code base requires touching almost every file, I'm trying to do frequent check-ins so as to avoid code merge hell.&lt;/p&gt;  &lt;p&gt;The next pass is to get &lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;GhostDoc&lt;/a&gt; stubs in throughout the code base, (with whatever goofy auto generated comments it may produce) so that the overall comment and line counts are stabilized as quickly as possible and the current generated documentation stops looking like one big sea of red. Finally, I'll be doing a pass over the entire collection ensuring that everything is completely and accurately annotated.&lt;/p&gt;  &lt;p&gt;To stay sane, I'm still be attacking work items in the process, so make sure that any outstanding bugs you've discovered have made it onto &lt;a href="http://www.codeplex.com/subsonic/WorkItem/List.aspx"&gt;CodePlex&lt;/a&gt;, to be included in our well-documented 2.0.4 release. Sorry, no date commitment yet...  &lt;/p&gt;</description><link>http://monk.thelonio.us/post/Documentation-Its-my-Cilice.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Documentation-Its-my-Cilice.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=ad75062a-f2a0-41f0-8050-348ee58dd3a3</guid><pubDate>Thu, 06 Dec 2007 17:00:23 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=ad75062a-f2a0-41f0-8050-348ee58dd3a3</pingback:target><slash:comments>6</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=ad75062a-f2a0-41f0-8050-348ee58dd3a3</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Documentation-Its-my-Cilice.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=ad75062a-f2a0-41f0-8050-348ee58dd3a3</wfw:commentRss></item><item><title>Query me this...</title><description>&lt;p&gt;I hate piggybacking on blog responses, but occasionally the topics are just so timely that it's hard not to. If you haven't checked out &lt;a href="http://www.codinghorror.com/blog/archives/000989.html"&gt;Jeff Atwood's latest post&lt;/a&gt; and &lt;a href="http://blog.wekeroad.com/2007/10/30/in-which-we-discuss-proprietary-object-noise/"&gt;Rob's response&lt;/a&gt; to it, I recommend taking a look. Like Rob, I take issue with the characterization of the query engine as being wrapped in "proprietary SubSonic object noise." However, given that I am currently rewriting the query engine with a focus on righting wrongs, I am interested in any feedback on the existing model, particularly its shortcomings.&lt;/p&gt;  &lt;p&gt;I have come to the conclusion that there is no "correct" way to structure the query syntax. In undertaking this rewrite, I attempted to identify some sort of common way of a "diagramming" SQL statements in they way students do with sentences (or would if grammar was still part of our primary school curriculum and they weren't spending all their time doing standardized test prep. &lt;em&gt;No child left behind!&lt;/em&gt;). For simple examples, this is possible, at least to a limited degree. Take following example from the &lt;a href="http://en.wikipedia.org/wiki/Sql"&gt;Wikipedia SQL entry&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/Querymethis_A76C/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="198" alt="image" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/Querymethis_A76C/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Unfortunately, this is not terribly meaningful, and really doesn't provide much of foundation for any kind of logical class structure, let alone an intuitive syntax and grammar, even if you don't support JOINs or predicate grouping.&lt;/p&gt;  &lt;p&gt;One of the mistakes we made with the first version of the query engine was trying too hard to hard to "port" SQL into SubSonic, to the point of including our much-maligned uppercase clause methods. (take that FxCop!) Once again, this works well for simple cases, but falls flat when it comes to more complex scenarios, or what some would call "real world."&lt;/p&gt;  &lt;p&gt;If SQL were a true standard, providing syntactical parity might make more sense. However, having spent several days poring through specifications for SQL-92, or at least what there is of it that's freely available without shelling out big bucks for a copy of ISO 9075, I began to under why the SQL syntax landscape is such a sloppy mess.&lt;/p&gt;  &lt;p&gt;Finally, let us not forget that SQL is no panacea. Injections attacks aside, there are good reasons why so much effort is spent trying to avoid writing it. For me, the prime example is the inclusion of spatial constructs into the core syntax, which raises this question:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Does a RIGHT JOIN become a LEFT JOIN if you're using an Arabic or Hebrew character set?&lt;/strong&gt;&lt;/p&gt;</description><link>http://monk.thelonio.us/post/Query-me-this.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Query-me-this.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=9f5b2c0d-d8c5-4136-9b82-c2bbdfb9a5a0</guid><pubDate>Wed, 31 Oct 2007 15:54:21 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=9f5b2c0d-d8c5-4136-9b82-c2bbdfb9a5a0</pingback:target><slash:comments>2</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=9f5b2c0d-d8c5-4136-9b82-c2bbdfb9a5a0</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Query-me-this.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=9f5b2c0d-d8c5-4136-9b82-c2bbdfb9a5a0</wfw:commentRss></item><item><title>Up Periscope</title><description>&lt;p&gt;I generally prefer to write posts that reflect action rather than intent. However, given my almost total disengagement from the SubSonic community over the past couple months, I thought it best to acknowledge the situation, and talk a little bit about where I'm focusing my efforts in the coming weeks.&lt;/p&gt;  &lt;p&gt;In case you missed &lt;a href="http://blog.wekeroad.com/2007/10/05/subsonic-be-vewwy-vewwy-quiet/"&gt;Rob's post&lt;/a&gt; a few weeks back, as of October 20th, I am now a happily married man (and no, he didn't have to fly to Boston to provide emotional support - no cold feet here). It was a wonderful event, and both Tera and I couldn't be happier with how it turned out. I'll post more about it at a later date, but in the interest of keeping this on target, I'll just mention that SubSonic played a minor, but important role in the process, powering a reservation and reporting system I built to manage to attendance and meal choices for our rehearsal dinner. With the wedding planning, and a perfect storm of professional commitments, which included building another &lt;a href="http://www.quidleyandco.com/"&gt;new SubSonic powered site&lt;/a&gt; and its associated CMS, I checked out for a while. So to those of you wrote me emails but never heard back, my apologies... Life is just now starting to get back to normal...&lt;/p&gt;  &lt;h4&gt;So What Now?&lt;/h4&gt;  &lt;p&gt;While Rob fends off the MVC paparazzi, I'm wrapping myself in my wet blanket and returning to the subterranean depths to work on code with considerably less sex appeal, namely Query 2.0. Specifically, the goal here is to carry forward the simplicity and elegance of the existing model, resolve some long-standing provider neutrality issues, and address some important functional limitations, including adding full JOIN support and mechanisms for specifying condition grouping to address operator precedence issues in WHERE clauses. Once complete, I'll be exploring the extension of the model to support strongly-typed query result sets, providing a richer set of options for operations on complex result sets than simply iterating with IDataReader (no promises yet on this one).&lt;/p&gt;  &lt;p&gt;Once the new query engine is in good shape, I'll be revisiting the templates with the goal of providing a significantly improved support for user-generated and extended templates. This has always been a goal of ours, but currently extending templates requires both knowledge and modification of the core code base. We'd like to address this and establish a model which truly supports and encourages the modification and extension of the core template library.&lt;/p&gt;  &lt;p&gt;Enough talk for now... It's time for me to get back to actually pumping out some code... As always, your feedback is our primary driver, so please weigh-in with your requests for the next generation query and template functionality!&lt;/p&gt;</description><link>http://monk.thelonio.us/post/Up-Periscope.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Up-Periscope.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=8b8669e1-7989-479b-85f3-7cb2dc1fa744</guid><pubDate>Mon, 29 Oct 2007 14:44:02 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=8b8669e1-7989-479b-85f3-7cb2dc1fa744</pingback:target><slash:comments>5</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=8b8669e1-7989-479b-85f3-7cb2dc1fa744</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Up-Periscope.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=8b8669e1-7989-479b-85f3-7cb2dc1fa744</wfw:commentRss></item><item><title>&amp;quot;Just Head Down the Hall... They're Right Across from RTFM Technical Writers...&amp;quot;</title><description>&lt;p&gt;Foolish, brilliant, or accidental? I'm heading back to the building later this week and may just have to stop in and ask... Edited for contrast/color only...&lt;/p&gt;  &lt;p align="center"&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="444" alt="WTF Consulting" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/JustHeadDowntheHall.TheyreRightAcross_773F/wtf_3.png" width="660" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Real posts (SubSonic and otherwise) will return once the wedding is behind me... Until then, it's strictly visual...&lt;/p&gt;</description><link>http://monk.thelonio.us/post/quot3bJust-Head-Down-the-Hall-Theyre-Right-Across-from-RTFM-Technical-Writersquot3b.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/quot3bJust-Head-Down-the-Hall-Theyre-Right-Across-from-RTFM-Technical-Writersquot3b.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=1a593e49-267d-450a-ad5c-22a4d0189ed5</guid><pubDate>Tue, 16 Oct 2007 12:28:49 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=1a593e49-267d-450a-ad5c-22a4d0189ed5</pingback:target><slash:comments>1</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=1a593e49-267d-450a-ad5c-22a4d0189ed5</trackback:ping><wfw:comment>http://monk.thelonio.us/post/quot3bJust-Head-Down-the-Hall-Theyre-Right-Across-from-RTFM-Technical-Writersquot3b.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=1a593e49-267d-450a-ad5c-22a4d0189ed5</wfw:commentRss></item><item><title>Freak Orthodox</title><description>&lt;p&gt;Sometimes I'm really glad I have camera on my phone... And yes, those are bike flashers on his belt...&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/FreakOrthodox_86C1/IMG_0053.jpg" target="_blank"&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="772" alt="Freak Orthodox" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/FreakOrthodox_86C1/IMG_0053_thumb.jpg" width="580" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://monk.thelonio.us/post/Freak-Orthodox.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Freak-Orthodox.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=c82e656d-dac5-40fa-8c7a-a1ce0b6ddf00</guid><pubDate>Thu, 27 Sep 2007 13:34:57 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=c82e656d-dac5-40fa-8c7a-a1ce0b6ddf00</pingback:target><slash:comments>4</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=c82e656d-dac5-40fa-8c7a-a1ce0b6ddf00</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Freak-Orthodox.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=c82e656d-dac5-40fa-8c7a-a1ce0b6ddf00</wfw:commentRss></item><item><title>Remedial Query JOINs</title><description>&lt;p&gt;Support for SQL JOIN syntax is probably our most requested Query feature addition. As you might imagine, fully supporting JOINs while maintaining the simplicity of the SubSonic query syntax is no small chore.&lt;/p&gt;
&lt;p&gt;Rob and I chatted about this late last week, and we both agreed that if SubSonic were to support JOINs, it should do so in a way that makes them easy to work with, and not merely port the SQL syntax into the parser. Personally, I find SQL JOIN syntax convoluted and truly believe that there must a more friendly and readable way to the same ends. In Revision 188, you'll find my first stab at making this happen.&lt;/p&gt;
&lt;p&gt;First off, a few caveats:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The capability is currently supported only on Sql Server&lt;/li&gt;
    &lt;li&gt;Supplementary syntax (WHERE, ORDER BY) etc. are not supported. If they do actually work, it's only out of pure luck&lt;/li&gt;
    &lt;li&gt;LEFT INNER JOIN support only&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Creating a JOINed Query&lt;/h3&gt;
&lt;p&gt;To facilitate JOIN support, a new Query constructor overload has been added. This overload takes a table schema reference, and one or more table columns as parameters. &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Query&lt;/span&gt; qry = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Query&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;Product&lt;/span&gt;.Schema, &lt;span style="color: rgb(43, 145, 175);"&gt;Product&lt;/span&gt;.ProductIDColumn, &lt;span style="color: rgb(43, 145, 175);"&gt;&lt;br /&gt;Product&lt;/span&gt;.ProductNameColumn, &lt;span style="color: rgb(43, 145, 175);"&gt;Supplier&lt;/span&gt;.CompanyNameColumn, &lt;span style="color: rgb(43, 145, 175);"&gt;Category&lt;/span&gt;.CategoryIDColumn);&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt; 
&lt;/p&gt;
&lt;p&gt;The column properties represent new static properties in the generated classes, so you'll need to regenerate any existing classes in order to perform these queries. This query syntax ultimately generates the following SQL and result set:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt; ProductID&lt;span style="color: rgb(128, 128, 128);"&gt;,&lt;/span&gt; ProductName&lt;span style="color: rgb(128, 128, 128);"&gt;,&lt;/span&gt; [J2]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[CompanyName]&lt;span style="color: rgb(128, 128, 128);"&gt;,&lt;/span&gt; [J3]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[CategoryID] &lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt; [dbo]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[Products] &lt;br /&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;INNER&lt;/span&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;JOIN&lt;/span&gt; [Suppliers] J2 &lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt; [Products]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[SupplierID] &lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt; [J2]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[SupplierID] &lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;INNER&lt;/span&gt; &lt;span style="color: rgb(128, 128, 128);"&gt;JOIN&lt;/span&gt; [Categories] J3 &lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt; [Products]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[CategoryID] &lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt; [J3]&lt;span style="color: rgb(128, 128, 128);"&gt;.&lt;/span&gt;[CategoryID]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;img width="522" height="337" border="0" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/RemedialQueryJOINs_10652/image_5.png" alt="image" style="border: 0px none ;" /&gt; &lt;/p&gt;
&lt;p&gt;So consider this just a first pass, with more to come. As always, we welcome any feedback and ideas, so please add your comments!&lt;/p&gt;</description><link>http://monk.thelonio.us/post/Remedial-Query-JOINs.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/Remedial-Query-JOINs.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=517a87aa-a5e0-4ea7-a015-add4fcff36fe</guid><pubDate>Thu, 13 Sep 2007 22:39:15 -0400</pubDate><category>CodePlex</category><category>General</category><category>SubSonic</category><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=517a87aa-a5e0-4ea7-a015-add4fcff36fe</pingback:target><slash:comments>14</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=517a87aa-a5e0-4ea7-a015-add4fcff36fe</trackback:ping><wfw:comment>http://monk.thelonio.us/post/Remedial-Query-JOINs.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=517a87aa-a5e0-4ea7-a015-add4fcff36fe</wfw:commentRss></item><item><title>A Tortoise Tip and Hotfix Help</title><description>&lt;p&gt;When I posted my &lt;a href="http://monk.thelonio.us/archive/2007/07/04/Asta-la-Vista.aspx"&gt;Vista rant&lt;/a&gt; a few weeks back, I listed "Mysterious file locking" as one of my gripes. However, a recent discovery has lead to believe that the blame for this issue may not rest solely on Vista. In the interest of full disclosure, I should admit that I'm back on Vista (64-bit no less - ouch) for a variety of reasons that I won't go into. Let's just say that I figured every operating system deserves a second chance, and fortunately &lt;a href="http://support.microsoft.com/kb/938194"&gt;KB938194&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/938979"&gt;KB938979&lt;/a&gt; have made the daily grind a little less painful.&lt;/p&gt; &lt;p&gt;Does the following scenario sound familiar? You try to delete a folder, but receive a prompt telling you that "access is denied." Setting security permission and taking ownership of the folder does not help. However, if you delete everything inside it the folder first, you can remove it without problem. With a little help from &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/handle.mspx"&gt;handle.exe&lt;/a&gt;, I discovered that in my case the source of the problem was actually TortoiseSVN, or more specifically &lt;strong&gt;TSVNCache.exe&lt;/strong&gt;, which retaining handles on these folders that I was unable to delete.&lt;/p&gt; &lt;p&gt;By default, TortoiseSVN will attempt to monitor the status of all directories on all drives, adjusting file and folder icons to reflect that current state of versioned files and folders. However, if you attempt to keep any order to your development projects (or even if you don't) the actual paths on your machine that need to be monitored represent only a subset of the overall directory. This means TortoiseSVN is spending a lot of effort (and disk I/O) watching irrelevant directories. Fortunately, there's a simple way to control this which directories TortoiseSVN will monitor. From the TortoiseSVN help file:&lt;/p&gt; &lt;p&gt;&lt;em&gt;"TSVNCache.exe also uses these paths to restrict its scanning. If you want it to look only in particular folders, disable all drive types and include only the folders you specifically want to be scanned."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;To make this adjustment, simply open up your TortoiseSVN settings (right click on any folder and select &lt;strong&gt;TortoiseSVN &amp;gt; Settings&lt;/strong&gt;) and select &lt;strong&gt;Look and Feel &amp;gt; Icon Overlays&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Your settings will probably look like the following: &lt;/p&gt; &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="image" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/ATortoiseTipandHotfixHelp_8934/image_8de51d55-18ee-477e-9d2d-8b51a21146e3.png" border="0" /&gt; &lt;/p&gt; &lt;p&gt;To restrict the monitored paths, uncheck &lt;strong&gt;Fixed drives&lt;/strong&gt; and then use the &lt;strong&gt;Exclude paths&lt;/strong&gt; and &lt;strong&gt;Include paths&lt;/strong&gt; values to narrow the scanning. If the specified directories should be acted on recursively, make sure you add a &lt;strong&gt;*&lt;/strong&gt; to the end of the path.&lt;/p&gt; &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="image" src="http://monk.thelonio.us/images/monk_thelonio_us/WindowsLiveWriter/ATortoiseTipandHotfixHelp_8934/image_066de85d-6ade-42f3-a7d3-dfebf788093f.png" border="0" /&gt; &lt;/p&gt; &lt;p&gt;Sure enough, once I made this change, the folder locking problem disappeared. Hooray for small victories!&lt;/p&gt; &lt;h5&gt;Escape from Hotfix Hell&lt;/h5&gt; &lt;p&gt;If you ever had to get a hotfix from Microsoft PSS, you know what a time consuming process it can be. You can spend upwards of half an hour on hold before reaching a screener, and subsequently an engineer, both of whom you'll need to convince that you are indeed to experiencing the problem that the hotfix addresses. So needless to say, I was thrilled when I discovered the following page this morning:&lt;/p&gt; &lt;p&gt;&lt;a href="https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&amp;amp;WS=hotfix"&gt;Hotfix Request Web Submission Form&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Kudos to Microsoft for &lt;em&gt;finally&lt;/em&gt; making it easier to get hotfixes! &lt;/p&gt;</description><link>http://monk.thelonio.us/post/A-Tortoise-Tip-and-Hotfix-Help.aspx</link><author>eric.nospam@nospam.erickemp.com (Eric Kemp)</author><comments>http://monk.thelonio.us/post/A-Tortoise-Tip-and-Hotfix-Help.aspx#comment</comments><guid>http://monk.thelonio.us/post.aspx?id=275d6a55-4922-4d14-94a4-d6abbeb3a426</guid><pubDate>Mon, 20 Aug 2007 13:45:26 -0400</pubDate><dc:publisher>Eric Kemp</dc:publisher><pingback:server>http://monk.thelonio.us/pingback.axd</pingback:server><pingback:target>http://monk.thelonio.us/post.aspx?id=275d6a55-4922-4d14-94a4-d6abbeb3a426</pingback:target><slash:comments>14</slash:comments><trackback:ping>http://monk.thelonio.us/trackback.axd?id=275d6a55-4922-4d14-94a4-d6abbeb3a426</trackback:ping><wfw:comment>http://monk.thelonio.us/post/A-Tortoise-Tip-and-Hotfix-Help.aspx#comment</wfw:comment><wfw:commentRss>http://monk.thelonio.us/syndication.axd?post=275d6a55-4922-4d14-94a4-d6abbeb3a426</wfw:commentRss></item></channel>
</rss>