SQLite表中有一个布尔(BOOL)类型字段。 在SubSonic生成的DAL中,它表示为字符串(而不是bool)。 这很奇怪。 如何管理?请帮忙。不正确的字段类型映射SubSonic 2.2,SQLite 3
alt text http://dl.dropbox.com/u/3882061/sqlite.GIF
SQLite表中有一个布尔(BOOL)类型字段。 在SubSonic生成的DAL中,它表示为字符串(而不是bool)。 这很奇怪。 如何管理?请帮忙。不正确的字段类型映射SubSonic 2.2,SQLite 3
alt text http://dl.dropbox.com/u/3882061/sqlite.GIF
我也许错了这一点,我只用亚音速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换到亚音速家伙有问题的代码。
我在12月份检查了一个较新版本的提供程序,修复了一些错误,但是从我可以告诉它没有包含在源代码下载中 - Rob不适用于sqlite,因此它不是优先级合并和测试。我建议看看我的版本,因为它解决了我的一些错误。我有一个更新的版本,通过几乎所有的单元测试,为sqlite进行了修改,但不知道是否值得上传它。由于数据库锁定错误以及核心代码中的sql server偏差,sqlite具有文件级锁定,因此很难让测试通过。单元测试完全没有覆盖。
Link to my SQLiteProvider.cs on github
我的版本有一个稍微不同GetDbType方法,我看到一些脑死亡的原因,我不包括布尔或布尔作为一种如此转换,我会补充说。
我将sqlite单元测试添加到了我的fork中。我发送了拉取请求以进行更改。如果他们没有看到请求并采取行动,那么我的版本的提供程序将保留为分支。我无能为力。 – 2010-03-07 08:04:01
非常感谢!有用 ! 我已经下载了SubSonic的源代码并修正了它。 上帝保佑开源。 – RubyWedge 2010-03-05 14:15:22