2014-02-12 45 views
0

我想做CQRS。我應該在哪裏查詢?目前我可以想到兩個選項:如何在CQRS中設計查詢層

1)每個查詢應該是一個獨立的類,只包含一個字符串?而這樣的對象應該傳遞給簡單/愚蠢的存儲庫

在這種方法中,我們可能有數千個小的查詢/類。我們也有複雜的查詢問題(例如,在oracle中我們不能有空的where in (...)部分),所以沒有好的地方來檢查該部分是否爲空,並且簡單地返回空集合而沒有甚至觸摸數據庫

也是有點很難在不同的數據庫

2)工作時使用不同的查詢創建庫對象

每次查詢1層的方法是它仍然CQRS?難道我們不能輕鬆地選擇和傳遞查詢嗎?或者它不是真的需要?

回答

1

我想你可能在這裏混合了概念。 CQRS only states查詢和命令有單獨的模型,這是非常廣泛的。

例如,一個可能的實現是有兩個單獨的通用存儲庫,一個用於查詢,另一個用於命令。查詢存儲庫實現可以使用數據庫,而命令存儲庫實現可以使用不同的實現。或不。

將查詢類傳遞給您的存儲庫而不是讓您的存儲庫實現許多不同的方法只是組織您的(查詢)存儲庫而不是命令查詢隔離問題。

+0

雖然問題是用ddd標記的,但似乎主要關注的是「查詢」內部。你能否在你的回答中詳細說明一下?你提到這只是「組織的問題」,我相信這就是問題最初提出的問題。 – emragins