2010-03-05 70 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 2010-03-05 14:15:22

1

我在12月份检查了一个较新版本的提供程序,修复了一些错误,但是从我可以告诉它没有包含在源代码下载中 - Rob不适用于sqlite,因此它不是优先级合并和测试。我建议看看我的版本,因为它解决了我的一些错误。我有一个更新的版本,通过几乎所有的单元测试,为sqlite进行了修改,但不知道是否值得上传它。由于数据库锁定错误以及核心代码中的sql server偏差,sqlite具有文件级锁定,因此很难让测试通过。单元测试完全没有覆盖。

Link to my SQLiteProvider.cs on github

我的版本有一个稍微不同GetDbType方法,我看到一些脑死亡的原因,我不包括布尔或布尔作为一种如此转换,我会补充说。

+0

我将sqlite单元测试添加到了我的fork中。我发送了拉取请求以进行更改。如果他们没有看到请求并采取行动,那么我的版本的提供程序将保留为分支。我无能为力。 – 2010-03-07 08:04:01

相关问题