大多數大型項目的一個常見方面是需要在許多域實體上使用公共跟蹤數據。例如,大多數大型項目,跟蹤以下屬性爲衆多領域中的實體:域實體跟蹤數據的最佳實踐?基礎課程還是作文?
DateTime DateCreated
User CreatedBy
DateTime LastModified
User LastModifiedBy
這個數據是不言自明的,該數據是用來跟蹤誰做了什麼時,Domain對象。
問題是在爲大型應用程序設計領域模型時,處理此跟蹤數據的最佳方法是什麼。
經典的方法是使用基類,然後讓相關的域類從該基類繼承。但是,這引發了我的favor composition over inheritance警鐘。我工作的項目越多,我越是拒絕繼承,但這並不是說有些情況下它是最好的選擇,例如在這種情況下。另一種繼承解決方案是使用接口,但雖然此解決方案耦合性較差,但我沒有看到在域實體上使用此方法的許多示例。
第二種方法是使用組合爲每個域實體添加排序的跟蹤對象。唯一的問題是數據層必須特別指示不要將它們表示爲單獨的表格。這是一項小任務,但如果沒有回報,很難說明問題。
處理跟蹤數據的最後一種方法是配置數據層以透明地執行此操作。我認爲這可能與Entity-Framework這樣做,但過去未實現此解決方案,這將是最先期的時間密集型解決方案。很難預見這種解決方案是否值得遇到麻煩。
儘管這個問題看起來很客觀,但這實際上是大多數大型項目必須以這種或那種方式處理的常見任務。
什麼是設計域模型和/或大項目跟蹤元數據的最佳方式?
對於組合,你可以添加一個複雜的類型,它將映射到同一個表中的列(即不是一個單獨的表) – qujck 2013-02-22 16:14:40