2

Dapper 拡張機能を使用して CRUD 操作を実行しようとしています。しかし、次のように MySQL データベースにデータを挿入しているときにエラーが発生します。

エラー: SQL 構文にエラーがあります。[......] 行 [...] 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

MSSQL データベースを使用している場合、Dapper Extensions は正しく機能しています。MySQL でこのエラーが発生するのはなぜですか?

4

1 に答える 1

7

エラーは、Dapper 拡張機能が (デフォルトで) SQL サーバーのクエリを生成しているために発生しますが、実際には MySQL に接続されています。これら 2 つの RDBMS には構文の違いがあるため、エラーが発生します。MySQL に接続していることを Dapper 拡張機能に伝える必要があります。

アプリケーションの起動時に方言をどこかに設定します。

//Synchronous
DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.MySqlDialect();

//Asynchronous
DapperExtensions.DapperAsyncExtensions.SqlDialect = new DapperExtensions.Sql.MySqlDialect();

お気づきのように、これは同期メソッドと非同期メソッドで個別に構成する必要があります。詳細についてはgithubを参照してください。

これにより、MySql の構文に従ってクエリを生成するように Dapper 拡張機能に指示されます。Dapper 拡張機能だけでなく、複数の RDBMS のクエリ生成をサポートする多くの ORM にも同様のことが必要です。

これとは別に、問題の診断に役立つログの実装を検討することもできます。MiniProfilerは、この目的に適したツールです。詳細については、他の回答を参照してください。

于 2018-10-27T06:21:17.840 に答える