2016-12-01 35 views
2

類型供應商似乎並沒有所有的數據類型添加到可用類型的列表:例如整數和文本做工精細,但VARCHAR或指定長度的詮釋都被忽略(而VARCHAR沒有長度規格工作正常)。F#sqlProvider的SQLite的忽略列類型

這是「正常」(是否有一個設置要修改)? (看來Mysql的SQL腳本包括例如VARCHAR大小限制)

#r @"..\packages\SQLProvider.1.0.37\lib\FSharp.Data.SqlProvider.dll" 

open FSharp.Data.Sql 

let [<Literal>] resolutionPath = __SOURCE_DIRECTORY__ + @"\..\packages\System.Data.SQLite.Core.1.0.103\lib\net45" 
let [<Literal>] connectionString = "Data Source=" + __SOURCE_DIRECTORY__ + @"\northwindEF.db; Version=3; foreign keys=true" 
// create a type alias with the connection string and database vendor settings 
type sql = SqlDataProvider< 
       ConnectionString = connectionString, 
       DatabaseVendor = Common.DatabaseProviderTypes.SQLITE, 
       SQLiteLibrary = Common.SQLiteLibrary.AutoSelect, 
       ResolutionPath = resolutionPath, 
       IndividualsAmount = 1000, 
       UseOptionTypes = true, 
       CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL> 
let db = sql.GetDataContext() 

for x in db.Main.Country do 
    printfn "%A" x. //columns are ignored depending on their type 

我國表的結構如下:

CREATE TABLE country (
    id   INTEGER  PRIMARY KEY AUTOINCREMENT 
           NOT NULL, 
    name   VARCHAR (255) NOT NULL, 
    area_id  INTEGER, 
    local_currency_id INTEGER, 
    comments  TEXT, 
    numeric_code INTEGER (3) UNIQUE, 
    alpha2_code VARCHAR (2) UNIQUE, 
    alpha3_code VARCHAR (3) UNIQUE, 
    svg_data_url TEXT 
); 
+2

無法用SqlProvider 1.0.37和System.Data.Sqlite 1.0.97重現。你有沒有機會使用MonoSQLite? – piaste

+0

不,我正在使用System.Data.Sqlite/System.Data.Sqlite核心1.0.103 – user1251614

+0

然後老實說,我會建議克隆SqlProvider庫項目,並在腳本中引用它時進行調試。代碼不難遵循。 – piaste

回答

0

看來它來自SQLite的類型提供代碼,其中VARCHAR之間的空間和(255)阻止映射查找。

我已經與代碼維護人員聯繫過。