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

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

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

因此,我有一个数据模型:

1
2
3
4
5
6
7
8
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对象,以将其保存到数据库,并使用数据(new lp_cctv_camera().PopulateWith(CamDetail);)填充lp_cctv_camera的实例。

就是这样:I_sid列是具有默认约束的NOT NULL列,该约束为该行生成哈希。这是数据库负责的事情,因此新项目不应该INSERT此列;它应该由约束生成。

忽略此列是否有任何方法可以db.Insert(lp_cctv_camera)?我已经尝试在定义中使用[Ignore]属性,但是在定义中我们仍然需要它来将现有的I_sid发送给客户端。我真的在文档中找不到任何内容。任何帮助表示赞赏!


我们添加了一个明确的[IgnoreOnInsert]属性,您可以使用该属性忽略Insert上的特定属性,该属性在MyGet的v4.5.13上可用。

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

1
2
3
4
5
6
7
8
9
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
}