Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有Postgres数据库和适当大小写的C POCO类(不使用实体框架)_C#_Database_Postgresql_Npgsql - Fatal编程技术网

C# 具有Postgres数据库和适当大小写的C POCO类(不使用实体框架)

C# 具有Postgres数据库和适当大小写的C POCO类(不使用实体框架),c#,database,postgresql,npgsql,C#,Database,Postgresql,Npgsql,我已经使用Postgres SQL创建了一个数据库,我想使用Npgsql ADO.Net提供程序库与该数据库交互。我所有的Postgres表和列都使用小写命名,但我希望我的C POCO使用大写命名 例如,在Postgres中,我的用户表被命名为users复数,并且它有一个user_name列。在C中,我想将该表和列映射到一个名为User singular的类,该类具有一个名为UserName的属性 我看到的所有使用数据注释来实现这一点的示例都是使用类似于EF的ORM,但我不想使用ORM,只想使用

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

例如,在Postgres中,我的用户表被命名为users复数,并且它有一个user_name列。在C中,我想将该表和列映射到一个名为User singular的类,该类具有一个名为UserName的属性

我看到的所有使用数据注释来实现这一点的示例都是使用类似于EF的ORM,但我不想使用ORM,只想使用原始Npgsql。如果我只使用npgsqlraw而不使用ORM,数据注释会起作用吗?例如:

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

Npgsql不为您做任何类型的映射——它只负责将您的SQL命令发送到PostgreSQL并向您提供结果。由您自己编写您想要的任何SQL—Npgsql完全不知道您的POCO或它们上的任何注释


如果您不想手工编写SQL,则需要一个O/RM,如实体框架或其他映射层。如果您决定编写自己的SQL,建议您查看Dapper。

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

Postgres支持是一项新功能,所以我非常想知道您的进展如何。将providerName=Npgsql放入QFDaultConnection conn字符串中,然后退出。Postgres不像SQL Server那样报告预期类型的输入参数。如果您希望输入参数具有类型安全性,请在SQL中的参数中附加_typeName,类型名称在其中。您可以详细说明在注释的参数部分附加_typeName吗?任何推荐信都可以。