Subsonic и SQL Server 2014 Web Edition

Мы только что обновили нашу базу данных с SQL Server Express до SQL Server 2014 Web Edition.

Мы также, и не спрашиваем меня, почему, используем Subsonic в качестве поставщика базы данных.

Как только мы указали наш код на новую редакцию SQL 2014, мы получили ошибки.

Похоже, что Subsonic решил в некоторых запросах, связанных с разбиением на страницы, отказаться от предложений Where, чтобы следующее предложение And вызывало ошибку.

У кого-нибудь еще возникли проблемы с Subsonic и SQL Server 2014 Web Edition.

Мы используем Subsonic 2.2 и не решаемся перейти на 3, если не знаем, что это сработает, поскольку это серьезная работа.

Примечание. Код отлично работает с SQL Server 2012 Business edition.


person griegs    schedule 02.09.2015    source источник
comment
Что вы получаете за версию DataProvider для базы данных? то есть SubSonic.DataService.Provider.DatabaseVersion. Интересно, не возвращается ли он к провайдеру SQL2000.   -  person Mike Walsh    schedule 02.09.2015
comment
Я использую SubSonic 2.2 с SQL Server 2012 Enterprise / Express в течение многих лет без каких-либо проблем. Версия 2.2 довольно старая, поэтому вам нужно добавить некоторые недостающие типы SQL, но в целом это довольно простой / быстрый процесс.   -  person Zachary    schedule 09.10.2015
comment
Вы должны получить исходный код и добавить несколько дополнительных простых проверок, чтобы включить sql 2014 в список ms sql server, иначе исходный код сбросит его на ansi sql по умолчанию. И не переходите к версии 3. Он чертовски медленный, совсем не дозвуковой, и вы в конечном итоге вернетесь обратно. Subsonic 2.2 очень хорош, просто нужны доработки, которых никогда не делали.   -  person Aristos    schedule 26.01.2016
comment
На мои первые вопросы здесь: stackoverflow.com/questions/2363735/   -  person Aristos    schedule 26.01.2016


Ответы (1)


Как отмечено в комментариях, вам необходимо обновить исходный код для Subsonic.

Это находится в .. \ SubSonic-2.0-master \ SubSonic \ DataProviders \ DataService.cs, когда вы получаете код с GitHub.

Область для обновления находится ниже. В зависимости от того, как вы хотите его обновить, но для меня, использующего SQL Server 2012, я только что по умолчанию использовал Sql2008Generator: -

case DataProviderTypeName.SQL_SERVER:
if(Utility.IsSql2005(provider))
   generator = new Sql2005Generator(sqlQuery);
else if(Utility.IsSql2008(provider))
   generator = new Sql2008Generator(sqlQuery);
else
   generator = new Sql2000Generator(sqlQuery);
   break;
person Norman C    schedule 30.09.2016