2009-08-12 4 views
0

эти коды прекрасно работает на SQL Express 2008:SubSonic 3.0.0.3 | SimpleRepository - OrderByDescending и .Первый()

return _repository.GetInstructions() 
     .Where(x => x.PublishedDate != null) 
     .OrderByDescending(x => x.PublishedDate) 
     .First(); 

но при запуске с помощью SQL Server 2000, он ломает. вот ошибка. Я отправлю след, если кто-то захочет его увидеть.

FailedSystem.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '('. 

Вот след:

TestSqlITInstructionRepository.Should_Get_Latest_ITInstruction : FailedSystem.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '('. 
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
at System.Data.SqlClient.SqlDataReader.get_MetaData() 
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 
at SubSonic.DataProviders.DbDataProvider.ExecuteReader(QueryCommand qry) in DbDataProvider.cs: line 137 
at SubSonic.Linq.Structure.DbQueryProvider.Execute<T>(QueryCommand`1 query, Object[] paramValues) in C:\Documents and Settings\nobody\My Documents\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\SubSonic.Core\Linq\Structure\DbQueryProvider.cs: line 280 
at lambda_method(ExecutionScope) 
at SubSonic.Linq.Structure.DbQueryProvider.Execute(Expression expression) in C:\Documents and Settings\nobody\My Documents\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\SubSonic.Core\Linq\Structure\DbQueryProvider.cs: line 131 
at SubSonic.Linq.Structure.QueryProvider.System.Linq.IQueryProvider.Execute<S>(Expression expression) in C:\Documents and Settings\nobody\My Documents\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\subsonic-SubSonic-3.0-8a52a0913ac0b8542d5d041262046c497387223f\SubSonic.Core\Linq\Structure\QueryProvider.cs: line 45 
at System.Linq.Queryable.First<TSource>(IQueryable`1 source) 
at Kiss.Test.Repositories.TestSqlITInstructionRepository.Should_Get_Latest_ITInstruction() in TestSqlITInstructionRepository.cs: line 73 
+0

Можете ли вы разместить sql, который генерирует этот запрос, а также трассировку стека? –

+0

Это проблема. Я разместил здесь разрешение: http://stackoverflow.com/questions/1397933/subsonic3-method-firstordefault-throws-exception-with-sql-server-2000/3466302#3466302 – DaveHogan

ответ

1

Я не думаю, что SubSonic полностью поддерживает MS SQL 2000. Мои собственные исследования показывают, что .Первый() genarates TOP (1)
Для MS SQL 2000 он должен быть TOP 1 без скобок

+0

Это правда, у меня есть просто столкнулся с этой ошибкой, и я обманул ее своим ответом. Теперь я использую SimpleRepository.Single вместо All и после первого – Tom

0

В документах SubSonic (http://subsonicproject.com/docs/Supported_Databases) говорится, что он поддерживает «SQL Server (200-2008)», поэтому это означает, что это, вероятно, ошибка. Я думаю, вы должны, вероятно, представить его как проблему для сайта SubSonic github.

Смежные вопросы