我剛剛開始爲一個新的C#項目建模,該項目必須是可持久的。面向對象數據模型 - 我可以忽略對象關係映射器約束嗎?
看起來最自然的OO模型將會有很多嵌套的.Net泛型。對象列表,這些對象也將包含其他泛型類型的列表等,至少嵌套三層。理想情況下,我想僅以OO方式設計數據模型,並讓對象關係映射工具處理持久性 - 對我而言,OO設計比關係設計更容易。
但是我對ORM的初步研究表明,他們並不需要這樣工作。目前還不清楚我是否可以創建任意複雜的對象模型,並期望ORM能夠「自動地」保留它。 (我昨天問過這個問題)。
這是我的印象,我可能不得不將我的OO數據模型限制爲我知道ORM可以處理的構造,這似乎是一個很大的限制,特別是當我還沒有決定使用ORM時。
我要保持項目的設計前進,並不願在現在研究的ORM陷入了下來。
我的直覺是剛剛設計我的對象模型周圍什麼,我知道我可以在C#中做,在似乎最自然的方式。這將幫助我更好地瞭解應用程序真正需要的內容。如果證明是必要的,那麼我希望能夠根據ORM限制重新設計設計。
這是一個很好的方法,還是我讓自己爲一個受傷的世界?預先處理已知的ORM約束是否更好,並圍繞這些約束「虛弱」對象模型?
編輯:未經請求的Stefan Steinegger列出了NHibernate強加給OO代碼的大部分限制條件。其他人是否可以爲其他ORM提供類似的列表 - 亞音速,特別是?
我相信這是昨天的問題的鏈接:http://stackoverflow.com/questions/1527805/orms-that-work-with-complex-net-generic-objects-eg-nested-list-etc – 2009-10-07 15:16:59
我對其他ORM不太瞭解,但是關於這個問題有一個持續的討論,涉及到NHibernate在這裏:http://stackoverflow.com/questions/1514278/is-it-possible-to-use-nhibernate-without-altering -a-ddd-model-that-part-of-af/1514425#1514425 – 2009-10-07 15:17:10
@Jeff - 這是一個很好的鏈接 - 我upvoted所有的答案! – 2009-10-07 15:53:21