Ainda é um problema pendente, mas é uma solução fácil. Se você tiver o código-fonte SubSonic, faça algumas edições.
-- src\SubSonic\DataProviders\SqlDataProvider.cs.
Em torno da linha #1010 acima de "case datetime" adicione:
case "date":
return DbType.Date;
-- src\SubSonic\ActiveRecord\AbsractList.csAround linha #85 acima "else if (dbType ==DbType.DateTime)" adiciona:
else if (dbType == DbType.Date)
{
DateTime dX = Convert.ToDateTime(xVal);
DateTime dY = Convert.ToDateTime(yVal);
result = dX.CompareTo(dY);
}
-- src\SubSonic\CodeLanguage\CSharpCodeLanguage.csAround linha #222 acima de "case DbType.DateTime" adiciona:
case DbType.Date:
Estou 99% essas foram as principais alterações necessárias, sem essas alterações a última versão não suportará adequadamente o tipo de dados "DATA" do SQL Server 2008.