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

时间:2017-07-17 21:41:23

标签: c# .net servicestack ormlite-servicestack

我对这些技术还很陌生。我遇到了一个小问题,它可以通过编写一些惰性代码来修复......但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
}

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

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

忽略此列时,db.Insert(lp_cctv_camera)有什么办法吗?我在定义上尝试了[Ignore]属性,但我们仍然需要在定义中将现有的I_sid发送给客户端。我真的在文档中找不到任何东西。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

我们添加了一个明确的[IgnoreOnInsert]属性,您可以使用该属性忽略插入的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
}