2017-09-19 14 views
2

私が作成したテストデータベースに接続しようとしています。私はF#、Visual Studio Community 2017、MySQLデータベースを使用しています。サーバーはローカル(Wamp)です。F#でVisual Studio 2017でMySQL Dbに接続

私は今のためにこれを持っている:

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

open FSharp.Data.Sql 
open FSharp.Data.Sql.Providers 
open System.Collections.Generic 
open System 

[<Literal>] 
let connString = "Server=localhost; Database=test1; Uid=root" 
let resPath = __SOURCE_DIRECTORY__ + @"..\packages\MySql.Data.8.0.8-dmr\lib\net452" 


type sql = SqlDataProvider< 
       Common.DatabaseProviderTypes.MYSQL, 
       connString, 
       ResolutionPath = resPath, 
       UseOptionTypes = true> 

let db = sql.GetDataContext() 

そして、私はそれを動作させることはできません..「resPath」エラー「これは有効な定数式またはカスタム属性値ではありません」を与えます。リテラル '[]'をその前に挿入すると(下記参照)、別のエラーが表示されます。「厳密な名前の検証に失敗しました(例外:HRESULT:0x8013141A)」

let [<Literal>] resPath = __SOURCE_DIRECTORY__ + @"..\packages\MySql.Data.8.0.8-dmr\lib\net452" 

dbとの接続後、情報を追加してF#を使用してデータを分析したいと考えています。

他に何を試すべきかわかりません。すべてのパッケージが更新され、NuGetパッケージマネージャーを通してすべてのものがインストールされ、それらはすべてリファレンスに含まれています。私はアイデア/提案を感謝します。

ありがとうございました。

答えて

3

SqlDataProviderは型プロバイダです。つまり、コンパイル時に使用する型を生成できるようにコンパイル時に実行されるコードが含まれています。型プロバイダのすべてのパラメータは、コンパイル時に知られている定数でなければなりません。これは、resPathが "リテラル"(コンパイル時定数と事実上同じ)である必要がある理由です。

__SOURCE_DIRECTORY__は、あなたがそれを追加する必要がありますので、末尾のバックスラッシュを持っていません。これにより

let [<Literal>] resPath = __SOURCE_DIRECTORY__ + @"\..\packages\MySql.Data.8.0.8-dmr\lib\net452" 

を所定の位置に、私はあなたのStrong name validation failedエラーを再現することができました。私のために修正されたv6.9.9(current versionとしてマークされている)をMySql.Dataに固定しました。

+0

OMG!私はそれがバージョンほどシンプルなものだとは信じられない!どうもありがとうございました! :Dそれは働く! –

+0

@IsabellaNavarroあなたは大歓迎です。 – TheQuickBrownFox

関連する問題