我刚刚开始为一个新的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