Возможно, я ошибаюсь, я использовал Subsonic 2.2 только с SQL2008, но я бы порекомендовал посмотреть на источник для Subsonic, а именно 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;
}
Я бы порекомендовал изменить его, посмотреть, работает ли он, а затем рекомендовать это изменение дозвуковым частям.