2016-11-09 122 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