小编Ali*_*hor的帖子

关于 PostgreSQL 的 Dapper SQL 查询和参数的问题

我目前正在学习 Dapper。我在这里和其他地方(包括这个)搜索了很多,但找不到我的疑问的具体答案:

¿ Dapper 是使用通用 SQL 方言还是特定于数据库引擎?我的意思是,它使用底层数据库引擎中预期的 SQL 语法?起初,在阅读了十几个例子之后,我认为 SQL 查询是通用的,但现在尝试使用 PostgresSQL ODBC 我遇到了语法和参数的问题。

使用这个示例 POCO 类...

public class CardType {

    //Autoincremented Key
    public int Id { get; set; }

    public string Type { get; set; }

    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...以下行对我不起作用:

_connection.Execute(@"INSERT cardtypes (type, description) VALUES (@Type,  @Description)", cardType);
Run Code Online (Sandbox Code Playgroud)

首先,这一行引发了 ODBC 异常,因为在指定表之前需要“INTO”子句。参数也不起作用,因为如果我没记错的话,PostgresSQL 参数是用“?”设置的。符号而不是“@keyword”。在 GitHub页面上,我们可以找到:

Dapper 没有特定于数据库的实现细节,它适用于所有 .NET ADO 提供程序,包括 SQLite、SQL CE、Firebird、Oracle、MySQL、PostgreSQL 和 SQL Server。

所以我迷失了。:) 经过大量实验后,我发现将所有 PostgresSQL 内容都按预期工作。例如,接下来的所有案例都有效:

//Manually parameters

var …
Run Code Online (Sandbox Code Playgroud)

c# sql postgresql dialect dapper

5
推荐指数
1
解决办法
3774
查看次数

标签 统计

c# ×1

dapper ×1

dialect ×1

postgresql ×1

sql ×1