dapper - MySQL + Dapper 扩展 : Error in SQL syntax

标签 dapper dapper-extensions mysql-8.0

我正在尝试使用 Dapper Extensions 进行 CRUD 操作。但是我在将数据插入 MySQL 数据库时出错,如下所示:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near [......] at line [....]

如果我使用 MSSQL 数据库,Dapper Extensions 工作正常。为什么我在使用 MySQL 时会收到此错误?

最佳答案

该错误是因为 Dapper Extensions 正在为您实际连接到 MySQL 的 SQL 服务器生成查询(默认情况下)。这两个 RDBMS 之间存在语法差异,因此会出现错误。您必须告诉 Dapper Extensions 您正在连接到 MySQL。

在某处启动应用程序时设置方言。

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

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

正如您所注意到的,您需要为同步和异步方法分别配置它。您可以在 github 上阅读更多相关信息.

这将指示 Dapper Extensions 根据 MySql 的语法生成查询。不仅是 Dapper Extensions,许多支持为多个 RDBMS 生成查询的 ORM 也需要类似的扩展。

除此之外,您还可以考虑实现日志记录,这可能有助于您诊断问题。 MiniProfiler是用于此目的的好工具。您可以在我的 other 中找到更多详细信息回答。

关于dapper - MySQL + Dapper 扩展 : Error in SQL syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016610/

相关文章:

c# - Dapper 的良好实践

c# - Dapper NullReferenceException

c# - 使用 DapperExtensions 比较两个字段的谓词

php - 在 mysql 8 中使用 GROUP BY

MySQL 8.0 : How to Alter Procedure Definer

sql - 在 Dapper SqlBuilder 或 sp_exectuesql 中运行 SET 语句

.net - 更改 Dapper,以便将数据库空值映射到 double.NaN

mysql - MySQL 中 FIELD() 函数的限制(以字节/args 数量表示)是多少?

c# - 使用 dapper 插入 Guid 并检索值

dapper - 如何在运行时在 Dapper-Extensions 中更改架构?