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
);
無法用SqlProvider 1.0.37和System.Data.Sqlite 1.0.97重現。你有沒有機會使用MonoSQLite? – piaste
不,我正在使用System.Data.Sqlite/System.Data.Sqlite核心1.0.103 – user1251614
然後老實說,我會建議克隆SqlProvider庫項目,並在腳本中引用它時進行調試。代碼不難遵循。 – piaste