gpt4 book ai didi

sqlite - 访问 SQLITE 数据库时出现 SqlTypeProvider 错误

转载 作者:行者123 更新时间:2023-12-03 16:00:09 24 4
gpt4 key购买 nike

我正在通过 SQLProvider 访问 SQLite 数据库.我实际上可以连接到数据库并查询表中的数据。但是类型提供程序显示错误:Exception has been thrown by a target of an invocation .并且智能感知并没有真正起作用,例如表或属性不显示。看截图:

Type Provider Error

由于表和类型出现不可访问 VS 显示 lookup on object of indeterminate type尝试访问属性时出错(虽然它确实有效)。从表中提取数据也有效。因此类型提供程序可以访问数据库,但会显示这些错误。有没有办法让它正确识别数据库并访问其属性等,而不会出现错误。

我正在使用 64 位 SQLite 驱动程序。这是代码:

#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

最佳答案

这与当前的 SQLite 和 SQLTypeProvider(分别为 1.0.102.0 和 1.0.31)一起工作:

#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 .

关于sqlite - 访问 SQLITE 数据库时出现 SqlTypeProvider 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37905719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com