如何用倉儲實現事務?
如何處理多個repository庫?
借用一段話:
下面想象下如下場景,我們資料庫中有多個表,那樣我們需要為每個表建立乙個reporsitory類。(好多重複工作的說,其實這不是問題)
問題是關於 資料上下文(dbcontext) 物件的。如果我們建立多個repository類,是不是每乙個都單獨的包含乙個 資料上下文物件?我們知道同時使用多個 資料上下文 會存在問題,那我們該怎麼處理每個repository都擁有自己的資料上下文 物件的問題?
來解決這個問題吧。為什麼每個repository要擁有乙個資料上下文的例項呢?為什麼不在一些地方建立乙個它的例項,然後在repository被例項化的時候作為引數傳遞進去呢。現在這個新的類被命名為 unitofwork ,此類將負責建立資料上下文例項並移交到控制器的所有repository例項。
專案檔案結構:
baserepository**片段
/// /// repository資源庫基礎實現
///
///
public class baserepository: ibaserepositorywhere t : class, new()
... public iqueryablegetall()
...}
studentrepository**:
/// /// 業務邏輯實現層
///
public class studentrepository : baserepository, istudentrepository
}
其他分層**同上文controller呼叫:
public class studentscontroller : controller
// public istudentservice _studentservice 原來的**
本文**是個逐步演進的過程,所以部分**做了測試,依舊http://localhost:59148/students/index測試通過
本文參考**:
物件關係行為模式之工作單元
一 概念 unit of work 維護受業務事務影響的物件列表,並協調製化的寫入和併發問題的解決。其uml結構大致如下 工作單元記錄在業務事務過程中對資料庫有影響的所有變化。操作結束後,作為一種結果,工作單元了解所有需要對資料庫做的改變,統一對資料庫操作。二 為什麼要使用工作單元?如果沒有使用工作...
企業應用架構模式之工作單元模式
工作單元模式是一種物件 關係行為模式。其定義如下 維護受業務影響的物件列表,並協調製化和併發問題的解決。該模式主要考慮的問題是 資料庫的資料讀入記憶體後的資料物件,被改變後在什麼時機提交。一般而言,可以有兩種提交方式,即時提交和擇機提交。1 即時提交 當物件改變的時候馬上提交到資料庫。這樣的好處是不...
記一次流水線工作單元設計 golang
先用一張圖描述乙個golang併發程式在執行時的groutine processor,groutine和cpu的結構形態,和他們之間的關係。簡單說,這張圖詳細展示了某一時刻,程式對cpu資源的使用情況。第乙個觀點 groutine在建立時,並不能指定要放入到哪個groutine processor。...