MySqlDataAdapter似乎缺少.Net核心
我有一个旧的powershell脚本,我正在从Windows移植到OS X上运行的.Net Core。该脚本连接到MySQL DB并读取/写入数据。MySqlDataAdapter似乎缺少.Net核心
当我在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.
有谁知道一个替代的/更好的方式来存储数据以供离线使用?或者我只是想念一些东西?
查看最新版本的MySql.Data作为NuGet软件包提供:MySql.Data 7.0.6-IR31。
该说明指出它支持.NETStandard 1.6,因此它应该能够在.NET Core中使用。
- 我只是试过这个包,它仍然没有解决这个问题。 – Jeremy
由于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解决他们的直肠 - 头颅反转并能够正确发布。
但是,如果你愿意自己编译它,那么这绝对是可能的。
UPDATE: 这是我工作的代码: https://github.com/amjtech/MySQL.Data
'MySqlAdapter'不能为.NET核心1存在,因为没有'DataTable'那里。对于.NET Core 2,似乎没有人对添加支持感到困扰(请参阅:https://forums.mysql.com/read.php?38,657477,658168#msg-658168) – Dejan