4

Windows から OS X で実行されている .Net Core に移植している古い powershell スクリプトがあります。スクリプトは MySQL DB に接続し、データの読み取り/書き込みを行います。

Windows で実行したところ、MySqlDataAdapter を使用してデータを保存できました。ただし、これは新しい公式の MySQL DB プロバイダーを使用して行うことはできないようです (プロバイダーへのリンクはこちらです:こちら)。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.

オフラインで使用するためにデータを保存する代替/より良い方法を知っている人はいますか? それとも、何かが足りないのですか?

4

2 に答える 2

0

NuGet パッケージとして提供されている MySql.Data の最新バージョンを確認してください: MySql.Data 7.0.6-IR31

説明には.NETStandard 1.6をサポートしていると記載されているため、.NET Coreで利用できるはずです。

于 2016-11-10T16:39:52.627 に答える
0

dotnetcore2.0 は ADO サポート付きでリリースされているため、mysql をコンパイルして動作させることができます。オラクルのリリースやベータ版/アルファ版を待つことにうんざりしていたので、自分の手で問題を解決し、コードと状況を調べました。約 2 時間か 3 時間コードをいじったり、API を読んだり、ちょっとばかげたことをしたりして、netcore2.0 に対して mysql 8.0.3 をコンパイルすることができました。プロジェクト ファイルを手動で netcore 2.0 に変更し、コンパイラ ディレクティブを変更するだけで済みました。結局、コードを 1 行も追加する必要はありませんでした。多くの行を削除し、いくつかのファイルをコピーする必要がありましたが。最終結果は、mysqldataadapter とコマンド ビルダーでコンパイルされた mysql 8.0.3 です。

私のバージョンはまだ大部分がテストされておらず、間違いなく進行中の作業です。これが他の誰かがそれを変更しようとすることを奨励することを願っています. そうでない場合は、オラクルが直腸頭蓋反転を解決して適切なリリースを行うことができるまで、基本的なテスト/使用に十分に機能することを確認した後、ソースを github に投稿できます。

しかし、自分でコンパイルする気があれば、それは間違いなく可能です。

更新: これが私の作業コードです: https://github.com/amjtech/MySQL.Data

于 2017-11-23T09:12:29.533 に答える