2017-07-17 26 views
2

我對這些技術還很陌生。我遇到了一個小問題,可以通過編寫一些惰性代碼來解決這個問題......但OrmLite和ServiceStack簡化了很多事情,我想知道是否有更好的方法來做到這一點。ServiceStack OrmLite:在數據模型中使用默認的數據庫約束而不是空值

所以,我有一個數據模型:

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發送給客戶端。我真的找不到文檔中的任何內容。任何幫助表示讚賞!

回答

2

我們已經添加了明確的[IgnoreOnInsert]屬性,您可以使用該屬性忽略Insert上的特定屬性,即available on v4.5.13 on MyGet

此前v4.5.13你可以使用[Compute]屬性來獲得類似的行爲和插入過程中忽略的字段,e.g:再次

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 
} 
+2

mythz救援。非常感謝! – joh04667

相關問題