2010-09-24 64 views
1

我已經創建了域模型並定義了實體,值對象,服務等等。現在,我的查詢是我有一個名爲「Company」的實體,它具有大約20多個屬性,我想在我的頁面中綁定一個只需要兩個屬性的下拉列表控件,即company.Name,company.Id。爲什麼我應該使用這樣一個擁有超過20個屬性的實體來綁定下拉列表。域驅動設計中的綁定DropdownList

有沒有什麼辦法來處理這個問題,同時考慮到性能。

在此先感謝。

+0

爲什麼這個社區wiki? – eglasius 2010-09-24 05:27:27

+0

這是錯誤的發生,你可以指導我刪除它。 – 2010-09-24 07:18:49

回答

1

問題不是那麼多DDD相關。這是關於性能。

與我一樣 - 只要這些屬性不是來自單獨的表格,我不在乎是否有1個或20個屬性。如果選擇1或20個字段,則差異不會很大,但如果選擇開始加入其他表格,並且在存在select n+1時存在顯着差異,則顯着差異。

所以 - 當我通過我的ORM檢索列表Company以創建selectlist時,它足夠聰明,只需在Company表中運行sql select,並在需要時延遲加載其他東西(這些不在此特定範圍內案件)。

幸運的是 - 我不開發需要超高性能的系統,所以我不在乎它是否需要1或20個字段。如果我這樣做 - 我懷疑我會使用ORM。


對於其他一些持久性機制 - 它可能根本不是問題。例如。 - 如果您正在使用文檔數據庫,則可以將整個集合存儲/檢索到一個文檔中,因爲它的模式較少。性能損失急劇下降。

+0

如果公司擁有平均大小約爲1 MB的公司徽標的BLOB,您會做什麼? – gandjustas 2010-09-25 07:37:07

+0

@gandjustas我會懶加載他們。 – 2010-09-25 12:10:07

+0

它不僅獲取聚合,處理它並將其傳遞給客戶端也消耗更多的資源和帶寬。實施DDD本身就是一項挑戰,但優化比這更具挑戰性...... – 2010-09-27 05:15:58

-3

DDD與性能無關。有了DDD,您應該操作「聚合」 - 一組連接的實體。聚合應該從數據庫加載到應用程序內存中。 在DDD中被認爲是「報告」的Ah-hoc查詢(實際上所有查詢都是almolst),應該由denirmalized數據庫等單獨的機制完成。

http://devlicio.us/blogs/casey/archive/2009/02/13/ddd-command-query-separation-as-an-architectural-concept.aspx

這是廢話。不要使用DDD。

在需要時填寫查詢。使用Linq來組合分解查詢。

+1

我幾乎提起你,直到我讀完最後兩個參數。你說的是bs。 – epitka 2010-09-24 12:08:08

+0

@epitka它不是。至少 - 不是從他的背景來看。 :) – 2010-09-24 12:11:59

0

在這種情況下,我會考慮引用數據服務返回域模型的輕量級表示,或者最好(爲了簡單起見)實現緩存。無論哪種方式,請記住這只是你真的應該擔心的,你已經確定了架構的性能是一個問題。

0

創建一個通用鍵/值模型,並公開您的服務中返回您的公司名稱/公司ID列表的方法。這與您查詢數據庫的其他值類型數據(前州代碼/州代碼)類似。