2016-11-09 120 views
3

我有一个旧的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. 

有谁知道一个替代的/更好的方式来存储数据以供离线使用?或者我只是想念一些东西?

+0

'MySqlAdapter'不能为.NET核心1存在,因为没有'DataTable'那里。对于.NET Core 2,似乎没有人对添加支持感到困扰(请参阅:https://forums.mysql.com/read.php?38,657477,658168#msg-658168) – Dejan

回答

0

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

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

+0

- 我只是试过这个包,它仍然没有解决这个问题。 – Jeremy

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解决他们的直肠 - 头颅反转并能够正确发布。

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

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