簡體   English   中英

EF 中具有多個實體的 CQRS

[英]CQRS with multiple entities in EF

我有以下情況:

一個 State 實體是根,它包含多個參數,最重要的是 URL 和 ID。 然后我有 3 個實體可以選擇連接到 State,但總是必須有 1 個,而且只能是 1 個。

將消息(實體)發送到命令時。 我應該為每個選項制作 3 個不同的命令(這對我來說似乎最有可能),還是應該發送所有實體,即使有些實體可能是空的並在命令中弄清楚? 或者是否有另一種/更好的方法來處理這個問題。 因為我習慣在 1 條消息中包含所有數據,但我現在不能擁有。

CQRS 並沒有規定您應該如何划分命令(或查詢)的邏輯。 沒有什么本質上表明您必須將此創建邏輯分成幾個單獨的創建命令。

可以在 BLL 或 DAL 上實現 CQRS。 這會影響首選方法。 你沒有具體說明,所以我無法判斷。

一般來說,在 BLL 上使用 CQRS 時,我將 scope 我的命令發送到單個事務。 如果您需要 State 及其依賴項(在您的情況下聽起來很可能)之間的事務安全,請堅持使用單個命令。
如果您不需要事務安全,例如,如果您可以將依賴項的創建推遲到稍后階段,則將這兩個命令分開。

請注意,即使使用單個命令,您仍然可以將每個實體的創建邏輯抽象為例如它們自己的存儲庫方法,這些方法將由命令處理程序(通過其注入的依賴項)調用。 這很好。 您不需要通過單獨的命令進行路由。

如果您的 CQRS 在 DAL 上實現,但 BLL 管理事務(或者您沒有事務),您可以創建單獨的 DAL 命令,BLL 服務將在需要時觸發這些命令。 然而,用可能是空的信息盲目地觸發這些命令是沒有意義的,這意味着什么都不應該做。 僅當您知道需要執行命令時才觸發命令。 BLL 服務應該檢查是否需要創建依賴實體,然后才應該觸發相應的命令。

在所有情況下,應為 State 實體僅創建一個依賴項這一事實是業務邏輯,這應在 BLL 上實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM