SQLProvider不适用于任何类型的数据库。来自SqlTypeProvider的类型也不行。[F#] [macOS]

4
我正在尝试使用 SQLProvider 访问 MySql 数据库。目前我有以下代码:
let [<Literal>] resolutionPath = @"../mysql/"
let [<Literal>] connectionString = 
    "Server=localhost;Database=mydb;User=root;Password=root"

type sql = SqlDataProvider< 
            ConnectionString = connectionString,
            DatabaseVendor = Common.DatabaseProviderTypes.MYSQL,
            ResolutionPath = resolutionPath,
            IndividualsAmount = 1000,
            UseOptionTypes = true >

let ctx = sql.GetDataContext ()

经过一番努力,我已经成功编译了这段代码,并且它能够连接到我的本地数据库。

然而,对于ctx成员没有自动完成(F#将ctx视为对象类型)。当我执行如下操作时:

ctx.``some_table``

它无法编译。

当尝试连接到Sqlite或PostgreSQL数据库时,我遇到了同样的问题。 我使用的是最新的mono和SQLProvider版本(从nuget获取),并且在macOS 10.12上运行。 有人在unix上遇到过类似的问题吗? 是否有其他类型提供程序可用于sql数据库(不仅适用于Windows)? 我看到还有SqlDataConnection,它是否适用于macOS / linux和MySql?


据我所知,SqlDataConnection 是针对 SQL Server 的。你可能应该向 SqlProvider 提交一个问题,并提供重现步骤,因为它应该在 Mono 上工作。 - s952163
我在我的Mac上也遇到了完全相同的问题,已经过去两年半了。我尝试了Visual Code和Rider,它们的表现都一样。你最终是怎么解决的? - boggy
1个回答

1

非常晚的回复,我知道这不完全适用于MySQL,但请参考此链接:F# Connect SQLProvider with Postgres。它可能是类似的问题。

经过多次软件重启,我在Visual Studio Code和Rider中成功运行了它。我基本上在项目内创建了一个lib文件夹,然后复制了:

System.Runtime.CompilerServices.Unsafe.dll
System.Threading.Tasks.Extensions.dll
System.Memory.dll
Npgsql.dll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接