【问题标题】:Make NPoco consider Database default values让 NPoco 考虑数据库默认值
【发布时间】:2015-03-18 17:29:43
【问题描述】:

鉴于我的数据库 (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 值来实现此功能。

【问题讨论】:

    标签: c# .net postgresql npoco


    【解决方案1】:

    尝试使 CreatedAt 可以为空:

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

    或者在构造函数中设置它的值,如图所示 here.

    【讨论】:

    • 您好,谢谢您的回答。我尝试了Nullable&lt;DateTime&gt;DateTime?,但都没有成功。也许这是一个 Postgre 问题。在 CTor 中设置日期是我知道的另一种选择,但我更愿意在数据库中设置它以保持一致。无论如何,非常感谢!
    猜你喜欢
    • 2021-07-20
    • 2019-09-11
    • 2016-05-15
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多