4

我有一个旧的 powershell 脚本,我要从 Windows 移植到在 OS X 上运行的 .Net Core。该脚本连接到 MySQL DB 并读取/写入数据。

当我在 Windows 下运行它时,我能够使用 MySqlDataAdapter 来存储数据。但是,使用新的官方 MySQL DB 提供程序似乎无法做到这一点(这里是提供程序的链接:here)。Powershell 版本为 v6.0.0-alpha.12

这是代码的简化示例:

$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command)
$dataAdapter.SelectCommand.CommandTimeout = 0
$dataSet = New-Object System.Data.DataSet

Try {
    $dataAdapter.Fill($dataSet)
    $dataTable = new-object "System.Data.DataTable"
    $dataTable = $dataSet.Tables[0]
    $connection.Close()
} Catch [exception] {
    $dataAdapter.Dispose()
    $command.Dispose()
    $dataAdapter = $null
    return $Error 
}

它返回的错误是:

New-Object : Cannot find type [MySql.Data.MySqlClient.MySqlDataAdapter]: verify that the assembly containing this type is loaded.

有谁知道存储数据以供离线使用的替代/更好的方法?还是我只是错过了什么?

4

2 回答 2

0

由于 dotnetcore2.0 支持 ADO,因此可以让 mysql 编译和工作。我厌倦了等待 Oracle 发布甚至是 beta/alpha 版本,所以我自己动手,查看了代码和情况。在大约 2 或 3 个小时的代码修改、阅读 api 和一点纯粹的愚蠢运气中,我能够针对 netcore2.0 编译 mysql 8.0.3。我只需要手动将项目文件更改为 netcore 2.0 并修改编译器指令。最后,我甚至不必添加 1 行代码。尽管我不得不删除许多行并复制一些文件。最终结果是使用 mysqldataadapter 和命令生成器编译的 mysql 8.0.3。

我的版本在很大程度上还没有经过测试,而且最明确的是正在进行中的工作。我希望这鼓励其他人尝试修改它。如果不是,我可以在我确定它足够好用于基本测试/使用之后,在 github 上发布我的源代码,直到 Oracle 解决了他们的直肠-颅骨倒置问题并能够进行适当的发布。

但是,如果您愿意自己编译它,那绝对是可能的。

更新:这是我的工作代码: https ://github.com/amjtech/MySQL.Data

于 2017-11-23T09:12:29.533 回答
0

查看作为 NuGet 包提供的最新版本的MySql.Data:MySql.Data 7.0.6-IR31

描述指出它支持 .NETStandard 1.6,因此它应该能够在 .NET Core 中使用。

于 2016-11-10T16:39:52.627 回答