2010-03-05 6 views

Répondre

4

je peut-être tort sur ce point, je ne l'ai utilisé Subsonic 2.2 avec SQL2008 mais je vous conseille de regarder à la source pour Subsonic, à savoir SQLLiteDataProvider.cs et l'examen de la fonction DbType.

Il semble reconnaître le type Boolean mais pas Bool et la valeur par défaut lorsqu'il ne reconnaît pas votre type est de recourir à String.

Hare est le code en question de cette fonction

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; 
      } 

Je recommande le changer, de voir si cela fonctionne et recommeding alors le changement aux chaps subsoniques.

+0

Merci beaucoup! Ça marche ! J'ai téléchargé la source pour le SubSonic l'a corrigé et compilé. Que Dieu bénisse l'open-source. – RubyWedge

1

J'ai vérifié dans une nouvelle version du fournisseur en décembre avec plusieurs corrections de bugs, mais d'après ce que je peux dire, il n'est pas inclus dans le téléchargement source - Rob ne fonctionne pas avec sqlite donc ce n'est pas une priorité fusionner et tester. Je recommande de regarder ma version car elle a résolu plusieurs bugs pour moi. J'ai une version encore plus récente qui passe pratiquement tous les tests unitaires, modifiés pour sqlite, mais je me demande si cela vaut la peine de le télécharger. Il a été difficile de faire passer les tests en raison d'erreurs de verrouillage de la base de données et du biais du serveur sql dans le code de base - sqlite a un verrouillage de niveau fichier. Les tests unitaires ne sont pas du tout complets.

Link to my SQLiteProvider.cs on github

Ma version dispose d'une méthode GetDbType légèrement différente, et je vois pour quelque cerveau raison morte, je ne l'ai pas inclus bool ou booléen comme un type de convertir alors je vais ajouter que.

+0

J'ai ajouté les tests unitaires sqlite à ma fourche. J'ai envoyé une demande de traction pour les changements. S'ils ne voient pas la requête et n'agissent pas dessus, ma version du fournisseur reste comme une fourchette. Il n'y a rien que je puisse faire. –