我有一个旧的powershell脚本,我将其从Windows移植到OS X上运行的.Net Core。该脚本连接到MySQL DB并读取/写入数据。
当我在Windows下运行它时,我能够使用MySqlDataAdapter来存储数据。但是,使用新的官方MySQL数据库提供程序似乎不可能(这里是提供程序的链接: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.
是否有人知道存储数据以供离线使用的替代/更好方法?或者我错过了什么?
答案 0 :(得分:0)
查看作为NuGet包提供的最新版本的MySql.Data:MySql.Data 7.0.6-IR31。
该描述表明它支持.NETStandard 1.6,因此它应该能够在.NET Core中使用。
答案 1 :(得分:0)
由于dotnetcore2.0支持ADO,因此可以使用mysql进行编译和工作。我厌倦了等待Oracle发布版本甚至测试版/ alpha版本,所以我自己动手了,看看代码和情况。在大约2或3个小时的代码中,阅读api和一点点纯粹的愚蠢运气,我能够针对netcore2.0编译mysql 8.0.3。我只需手动将项目文件更改为netcore 2.0并修改编译器指令。最后,我不需要添加一行代码。虽然我不得不删除许多行并复制几个文件。最终结果是使用mysqldataadapter和命令构建器编译的mysql 8.0.3。我已经使用我的一些应用程序对其进行了测试,并且填充似乎在Windows中工作正常/我只移植了一些我使用连接构建器和数据适配器的小程序,填充没有更新,插入或删除数据集
我的版本仍然在很大程度上未经测试,而且最确定的是正在进行的工作。我希望这会鼓励其他人尝试修改它。如果不是,我可以在github上发布我的源代码,因为我确信它在基本测试/使用方面运行良好,直到Oracle解决了他们的直肠颅内反转并且能够正确释放。
但如果你愿意自己编译它,那肯定是可能的。
更新: 这是我的工作代码: https://github.com/amjtech/MySQL.Data