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