0

我是新的域驅動設計,所以請原諒,如果這個問題是微不足道的。我正在閱讀關於規範模式的內容,我相信它理解了它的意圖。大多數的基於Web的例子,顯示了其在兩個地方使用:EF實體或域對象的規範模式

  1. 內庫法

  2. 在域服務/應用服務。

但是,這隻會在EF實體和域對象相同時才起作用。我想這不是一個好的做法(使用EF實體的域對象)。 現在我的問題是 -

我們應該爲域對象和EF實體編寫不同的規範規則,還是有兩種方法可以爲兩者重複使用相同的規則?我猜如果我們不c#表達式和使用反射,我們可以以某種方式實現。

回答

0

請記住,使用EF存儲庫時,您已有默認選項可用 - 讓存儲庫返回IQueryable<T>而不是IEnumerable<T>。許多程序員害怕這一點,但如果這樣做,那麼LINQ將成爲您在基礎架構層的規範。

然後,在域層中,您可以應用規範和規則模式來封裝域對象應該測試的條件和規則。

還有其他的技術,但這種組合是我通常在我的項目中應用的。

+0

爲什麼downvotes?我從領域驅動設計的角度給出了關於基礎架構和領域規範的精確解釋。 –

+0

介意顯示這些技巧? – kayess

+1

有許多在線資源討論從存儲庫中暴露IQueryable的優點和缺點。關於規範模式,我在這裏的一個Pluralsight課程中有一個模塊:https://www.pluralsight.com/courses/tactical-design-patternsdot-net –