我們正在使用ORM /領域建模工具,該工具將允許我們跨MSSQL數據庫以「數據庫優先」方法生成的多個項目/程序集中生成多個相關領域模型。我們需要一些幫助來確定哪些工具可以滿足我們的需求。領域建模工具建議 - 跨項目關係和繼承
的要求是:
跨項目的關係
- 我們的領域被分成許多模塊,併爲每個客戶端(我們給源代碼),我們不使用的所有模塊和所以我們想要「拔掉」他們不需要查看或訪問的所有邏輯。
- 例如,我們希望將共享數據(主要是通用查找信息)存儲在它自己的常用程序集中。
- 我們不需要模型之間的雙向關係(因爲這會導致循環引用)。只有關係的孩子結束纔會生成。
跨項目繼承
- 與上述類似,我們希望能夠以抽象的共同功能集成到基類中的一個域模型和繼承他們。
- 注意:域之間的繼承鏈接將受到限制,每個子域只有一個或兩個。
- 注:這不應該的問題,而是我們使用「每個類型表」或「Class Table Inheritance」我們繼承我們的關係模型(DB)架構
生成的類是:
- 與DataContract /數據成員屬性標記
- 通知(通過INotifyPropertyChanged的實現方式)屬性改變
- 具有部分開*的PropertyName *改變()方法(例如按LINQ到SQL和實體框架生成的對象)
- (理想,但不是必需的)相關集合類型應實現INotifyCollectionChanged。
,以支持(或有變通方法來支持)任何ORM工具的任何反饋這些標準將不勝感激!
注:工具我們已經看過了(但這並不排除他們完全):
- LightSpeed(可愛,但不輕易支持跨項目繼承)。
- LLBLGen(複雜且包含所有內容,但使用
AsSeparateProjects
模式進行分組時似乎不支持跨模型關係,更不用說繼承了)。 - 實體框架(我剛剛失去了...當設計師的故事splitting the domain across multiple models不是很好)。
當選擇AsSeparateProjects時,LLBLGen Pro不支持通過組進行連接,因爲該模型會導致多個vs.net項目。如果我們允許跨越組邊界的連接(如您所請求的那樣),那麼vs.net項目最終會相互引用,這是不可能的,因爲這會導致循環引用。 – 2012-05-18 07:58:34