【问题标题】:MySqlDataAdapter Appears to be Missing from .Net Core.Net Core 中似乎缺少 MySqlDataAdapter
【发布时间】:2017-03-23 14:54:57
【问题描述】:

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

当我在 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 macos powershell .net-core powershell-core


【解决方案1】:

查看以 NuGet 包形式提供的最新版本的 MySql.Data:MySql.Data 7.0.6-IR31

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

【讨论】:

  • -我只是尝试了那个包它仍然没有解决问题。
【解决方案2】:

由于 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。我已经用我的一些应用程序对其进行了测试,并且填充似乎至少在 Windows 中可以正常工作/我只移植了一些我使用连接构建器和数据适配器完成的小程序,没有更新、插入或删除数据集.

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多