ServiceStack OrmLite:使用默认数据库约束而不是数据模型中的空值

ServiceStack OrmLite: Use default database constraint instead of null value from data model

我对这些技术还是很陌生。我 运行 遇到了一个小问题,它可以通过编写一些惰性代码来解决...但是 OrmLite 和 ServiceStack 简化了很多事情,我想知道是否有更好的方法来做到这一点。

所以,我有一个数据模型:

public class cctv_camera
{
    [AutoIncrement]
    public int I_id { get; set; }
    public string I_sid { get; set; }
    public string C_store_id { get; set; }
    // .... others
}

此数据模型映射到 table、cctv_camera。在从这个 table 进行一些连接后,还有另一个模型(称为 CamDetail)被发送到客户端。我们正在 POST 上从客户端接收回一个 CamDetail 对象以保存到数据库并使用数据 (new lp_cctv_camera().PopulateWith(CamDetail);).

填充 lp_cctv_camera 的实例

事情是这样的:I_sid 列是一个 NOT NULL 列,具有为该行生成散列的默认约束。这是数据库负责的事情,所以新项目不应该INSERT这一栏;它应该由约束生成。

有什么方法可以 db.Insert(lp_cctv_camera) 而忽略此列?我已经在定义中尝试了 [Ignore] 属性,但我们仍然需要在定义中使用它来将现有的 I_sid 发送到客户端。我真的在文档中找不到任何东西。感谢您的帮助!

我们添加了一个明确的 [IgnoreOnInsert] 属性,您可以使用它来忽略 Insert 上的特定属性,即 available on v4.5.13 on MyGet

在 v4.5.13 之前,您可以使用 [Compute] 属性来获得类似的行为并在插入期间忽略字段,例如:

public class cctv_camera
{
    [AutoIncrement]
    public int I_id { get; set; }
    [Compute]
    public string I_sid { get; set; }
    public string C_store_id { get; set; }
    // .... others
}