我希望强制使用datetime mysql列类型,因为petapoco正在创建一个时间戳列。
[TableName("test"), PrimaryKey("id")]
public class Test
{
[Column("id")]
public long id { get; set; }
[Column("datetime")]
public DateTime datetime { get; set; }
}
列装饰器有第二个参数“命名参数”。我怎么用呢?
答案 0 :(得分:1)
您可以将列标记为ResultColumn
,这样就会在选择时检索列,但不会包含在UPDATE
和INSERT
[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会将该属性映射到正确的列。
所以在你的问题中,不需要属性作为属性和列名相同。