使 NPoco 考虑数据库默认值



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

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值已经声明。有什么办法可以解决这个问题吗?一种替代方法是在应用程序中设置 Date,但我宁愿使用 DB 中的 default 值实现此功能。

try makin CreatedAt nullable:

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

或在构造函数中设置其值,如下所示这里。

最新更新