如何使用Petapoco强制表列类型

本文关键字:类型 何使用 Petapoco | 更新日期: 2023-09-27 18:24:45

我希望强制使用datetime-mysql列类型,因为petapoco正在创建一个时间戳列。

[TableName("test"), PrimaryKey("id")]
public class Test
{
        [Column("id")]
        public long id { get; set; }
        [Column("datetime")]
        public DateTime datetime { get; set; }
}

列装饰器有第二个参数"Named Parameters"。我该如何使用它?

如何使用Petapoco强制表列类型

您可以将列标记为ResultColumn,这样在选择时检索该列,但不包括在UPDATEINSERT

    [ResultColumn("datetime")]
    public DateTime datetime { get; set; }

或者只是

    [ResultColumn]
    public DateTime datetime { get; set; }

(如果属性名称与字段名称匹配,则无需键入名称)

为了强制正确的列类型,我建议使用脚本初始化数据库中的表,并让PetaPoco执行CRUD操作。这在PetaPoco中使用的测试中很明显,其中脚本用于初始化,如下所示:

SQL Server

 CREATE TABLE petapoco (
   id bigint IDENTITY(1,1) NOT NULL,
   date_created datetime NOT NULL,
   ...
 );

mysql

CREATE TABLE petapoco (
   id bigint AUTO_INCREMENT NOT NULL,
   date_created datetime NOT NULL,
   ...
  ) ENGINE=INNODB;

列装饰器用于更改属性映射到的列名,方法是将其指定为[column]属性的参数。因此,如果您有一个名为id的属性,但表中的列名名为article_id,则可以使用以下方法进行映射:

[Column("article_id")] 
public long id { get; set; }

在您的代码中,您将在保存和获取数据时使用属性名称,PetaPoco会将属性映射到正确的列。

因此,在您的问题中,不需要属性,因为属性和列名是相同的。