如何使用Petapoco强制表列类型?

时间:2014-09-26 19:09:48

标签: c# mysql umbraco petapoco umbraco7

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

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

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

列装饰器有第二个参数“命名参数”。我怎么用呢?

2 个答案:

答案 0 :(得分:1)

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

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

或只是

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

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

答案 1 :(得分:0)

要强制使用正确的列类型,我建议使用脚本初始化数据库中的表,并让PetaPoco执行CRUD操作。这在tests being used in 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;

列装饰器用于change the column name to which a property is mapped by specifying it as an argument to the [column] attribute。因此,如果您有一个名为id的属性,但表中的列名称为article_id,则可以使用以下命令进行映射:

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

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

所以在你的问题中,不需要属性作为属性和列名相同。