使NPoco考虑数据库默认值

时间:2015-01-20 13:08:36

标签: c# .net postgresql npoco

在我的数据库(PostgreSQL)中给出以下table

CREATE TABLE produkt (
    id SERIAL NOT NULL,
    name VARCHAR(50),
    created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT timezone('utc'::text, now())
);

ALTER TABLE produkt ADD CONSTRAINT produkt_pkey PRIMARY KEY (id);

我想使用NPoco来使用此poco访问数据

[TableName("produkt"), PrimaryKey("id", AutoIncrement = true)]
public class Product
{
    [Column("id")]
    public int Id { get; set; }

    [Column("name")]
    public string Name { get; set; }

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

现在,当我打电话

var product = new Product
{
    Name = "My new Product"
};

Database.Insert(product);  // or Database.Save<Product>(product);

created_at - 列为-infinity,即使已声明default值。有没有什么办法解决这一问题?一种替代方法是在应用程序中设置日期,但我宁愿使用数据库中的default值来实现此功能。

1 个答案:

答案 0 :(得分:-2)

尝试makin CreatedAt nullable:

[Column("created_at")] public Nullable<DateTime> CreatedAt { get; set; }

或在构造函数中设置其值如图所示 here