2010-03-05 2 views

ответ

4

Я, возможно, не так на это, я использовал только Дозвуковой 2.2 с SQL2008, но я бы рекомендовал смотреть на источник дозвуковых, а именно SQLLiteDataProvider.cs и рассмотрение функции DbType.

Кажется, что распознает тип Boolean, но не Bool, и по умолчанию, когда он не распознает ваш тип, необходимо обратиться к String.

Заяц код в вопросе от этой функции

switch(sqliteType.ToLowerInvariant()) 
      { 
       case "text": 
       case "char": 
       case "nchar": 
       case "varchar": 
       case "nvarchar": 
        return DbType.String; 
       case "boolean": 
       case "bit": 
        return DbType.Boolean; 
       case "bigint": 
       case "int": 
       case "integer": 
        return DbType.Int64; 
       case "real": 
       case "numeric": 
       case "double": 
       case "single": 
       case "float": 
        return DbType.Single; 
       case "smallint": 
        return DbType.Int16; 
       case "date": 
       case "time": 
       case "datetime": 
       case "smalldatetime": 
       case "timestamp": 
        return DbType.DateTime; 
       case "binary": 
       case "blob": 
       case "image": 
        return DbType.Binary; 
       case "guid": 
        return DbType.Guid; 
       default: 
        return DbType.String; 
      } 

Я рекомендовал бы изменить его, видя, если он работает, а затем recommeding изменения в дозвуковых парнях.

+0

Большое спасибо! Оно работает ! Я загрузил источник для SubSonic, исправил его и скомпилировал. Бог благословил с открытым исходным кодом. – RubyWedge

1

Я проверил в новой версии провайдера в декабре несколько исправлений ошибок, но из того, что я могу сказать, он не включен в исходную загрузку - Rob не работает с sqlite, поэтому для него это не приоритет для слияния и тестирования. Я рекомендую посмотреть мою версию, так как он решил несколько ошибок для меня. У меня есть еще более новая версия, которая проходит практически все модульные тесты, модифицированные для sqlite, но задайтесь вопросом, стоит ли загружать их. Было сложно получить тесты для прохождения из-за ошибок блокировки базы данных и смещения SQL-кода в базовом коде. Sqlite имеет блокировку уровня файла. Модульные тесты полностью не охвачены.

Link to my SQLiteProvider.cs on github

Моя версия имеет немного другой метод GetDbType, и я вижу, по какой-то причине мозга мертвого я не включал логическое значение или логическое значение как тип для преобразования, так что я добавлю, что.

+0

Я добавил тесты блока sqlite к своей вилке. Я отправил запрос на перенос для внесения изменений. Если они не видят запрос и действуют на него, моя версия провайдера остается вилкой. Я ничего не могу сделать. –