2016-12-01 1 views
2

유형 공급자가 사용 가능한 유형 목록에 모든 데이터 유형을 추가하는 것 같지 않습니다. 정수 및 텍스트는 잘 작동하지만 varchar 또는 지정된 길이의 int는 무시됩니다. 길이 사양은 잘 작동합니다).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 Core 1.0.103 – user1251614

+0

솔직히 SqlProvider 라이브러리 프로젝트를 복제하고 스크립트에서 참조하는 동안 디버깅하는 것이 좋습니다. 이 코드는 따르기가 어렵지 않습니다. – piaste

답변

0

SQLite는 유형 제공자 코드에서 오는 것 같다 어디 VARCHAR 사이의 공간 및 (255)는 매핑 조회를 금지합니다.

코드 관리자에게 연락을했습니다.

관련 문제