2016-06-19 7 views
4

SQLProviderでSQLiteデータベースにアクセスしています。私は実際にデータベースに接続し、テーブル内のデータを照会することができます。ただし、タイププロバイダにはエラー:Exception has been thrown by a target of an invocationが表示されます。インテリセンスは実際には機能しません。テーブルまたはプロパティは表示されません。スクリーンショットを参照してください:アクセスできないVS現れテーブルや種類以来SQLiteデータベースにアクセスするとSqlTypeProviderエラーが発生する

Type Provider Error

プロパティを(それはしかし動作しない)にアクセスしようとするとlookup on object of indeterminate typeエラーを示しています。テーブルからデータを抽出することもできます。したがって、型プロバイダはデータベースにアクセスできますが、これらのエラーを表示します。 dbを正しく認識させ、エラーなしでそのプロパティにアクセスする方法はありますか?

私は64ビットSQLiteドライバを使用しています。ここで、コードは次のとおりです(それぞれ1.0.102.0および1.0.31)現在のSQLiteとSQLTypeProviderで意図したよう

#if INTERACTIVE 
#r @"..\packages\SQLProvider.1.0.8\lib\FSharp.Data.SqlProvider.dll" 
#r @"..\packages\System.Data.SQLite.Core.1.0.101.0\lib\net46\System.Data.SQLite.dll" 
#r @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Data.Linq.dll" 
#endif 

open System 
open FSharp.Data.Sql 

[<Literal>] 
let connectionString = "Data Source="+ @"C:\tmp\databaseFile.db3" 
[<Literal>] 
let resolutionPath = __SOURCE_DIRECTORY__ + @"..\..\packages\System.Data.SQLite.Core.1.0.101.0\lib\net46" 

type sql = SqlDataProvider< 
       Common.DatabaseProviderTypes.SQLITE, 
       ConnectionString = connectionString, 
       ResolutionPath = resolutionPath, 
       CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL 
       > 

let ctx = sql.GetDataContext() 

let table2 = ctx.Main.Table2 //DateTime 
let table3 = ctx.Main.Table3 //Text 

query {           
     for r in table3 do 
      select (r.Date1)         
      } |> Seq.toList 

query {           
     for r in table2 do 
      select (r.Date1)         
      } |> Seq.toList 

答えて

2

これは動作します:

#if INTERACTIVE 
#I @"..\packages\SQLProvider.1.0.31\lib" 
#r "FSharp.Data.SqlProvider.dll" 
#I @"..\packages\System.Data.SQLite.Core.1.0.102.0\lib\net46" 
#r "System.Data.SQLite.dll" 
#I @"..\packages\System.Data.SQLite.Linq.1.0.102.0\lib\net46" 
#r "System.Data.SQLite.Linq.dll" 
#endif 

open System 
open FSharp.Data.Sql 
//open System.Data.SQLite 
//open System.Data.SQLite.Linq 

[<Literal>] 
let connectionString = "Data Source="+ @"C:\tmp\databaseFile.db3" 
[<Literal>] 
let resolutionPath = __SOURCE_DIRECTORY__ + @"..\..\packages\System.Data.SQLite.Core.1.0.102.0\lib\net46" 

type sql = SqlDataProvider< 
       Common.DatabaseProviderTypes.SQLITE, 
       connectionString, 
       ResolutionPath = resolutionPath, 
       CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL> 

let ctx = sql.GetDataContext() 

let table2 = ctx.Main.Table2 //DateTime 
let table3 = ctx.Main.Table3 //Text 

これは、このissue #196とは何かを持っていたかもしれません。

関連する問題