C# POCO 类 带有 Postgres 数据库和适当的大小写(不使用 Entity Framework)

C# POCO Classes with Postgres Database and Proper Casing (without using Entity Framework)

我已经使用 Postgres SQL 创建了一个数据库,我想使用 Npgsql ADO.Net 提供程序库与该数据库进行交互。我所有的 Postgres tables 和列都有小写命名,但是,我希望我的 C# POCOS 有大写命名。

例如,在 Postgres 中,我的用户 table 被命名为 "users"(复数)并且它有一个 user_name 列。在 C# 中,我想将 table 和列映射到名为 User(单数)的 class 和名为 UserName 的 属性。

我看到的所有使用数据注释来完成此操作的示例都使用了像 EF 这样的 ORM,但我不想使用 ORM,只使用原始 Npgsql。如果我只使用没有 ORM 的 Npgsql(原始),数据注释会起作用吗?例如:

[Table("users")]
class User
{
  [Column("user_name")]
  [Required]
  public string UserName { get; set; }
}

Npgsql 不会为您做任何类型的映射 - 它只负责将您的 SQL 命令发送到 PostgreSQL 并为您提供结果。你可以写任何你想写的东西 SQL - Npgsql 完全不知道你的 POCO 或你对它们的任何注释。

如果您不想 hand-write SQL,您需要一个 O/RM,例如 Entity Framework 或其他一些映射层。如果您决定自己编写 SQL,建议您查看 Dapper。

使用 QueryFirst(免责声明:我写的)它将根据从您的查询返回的模式生成您的 pocos。 poco class 名称是基于你给查询的名称,所以大小写由你控制。要控制结果集中列的大小写,请使用 SQL 别名。 (结果列成为生成的 POCO 中的属性)。没有 ORM,没有依赖关系,完全控制您的 sql,所有查询都经过持续集成测试。所有数据访问都经过持续验证。有什么不喜欢的?