2017-02-18 17 views
1

我剛剛發現了Marten,並且正在嘗試學習如何正確使用它。使用Marten for ASP.NET MVC/Core的正確方法

創造新的記錄,也可以是直線前進的提交過程中提供一個空白表單/視圖,然後 - 只需打開一個新的會話,然後進行保存這樣的:

using (var session = _documentStore.LightweightSession()) 
     { 
      session.Store(model); 
      session.SaveChanges();     
     } 

又是如何的更新現有記錄?在獲取記錄並將其顯示在表單上之後,使用上面使用的相同代碼還是有其他方法?我發現更新的唯一例子是通過調用Load()方法從會話中加載記錄,然後編輯屬性,之後調用所使用會話的SaveChanges()方法。

回答

2

Marten使用document identity跟蹤文檔。 Id可以是公共領域或財產,名稱必須是idIdID。從doc

報價:

貂的.Net API使得插入和更新之間沒有區別。 由Marten生成的用於更新文檔 存儲表的Postgresql函數爲您執行「upserts」。任何時候通過IDocumentSession.Store(文檔)註冊的文檔是 ,Marten爲該文檔的id類型運行 「自動分配」策略。有關文檔ID的更多信息,請參閱 文檔標識。

這意味着您不必在更新文檔之前加載文檔。如果您知道其身份值,則只需更改文檔中的某個屬性,然後撥打IDocumentSession.Store(document)即可在數據存儲中存在具有此ID的文檔時執行更新。

+0

我明白了。我讀過它有加載記錄的髒跟蹤系統,但通過「Store()」和「SaveChanges()」相同的方法傳遞整個模型,這個特性是否仍然有效?我相信覆蓋整個JSONB字段比僅更新髒字段花費了很多。謝謝! – eSPiYa