在我看到的所有示例中,ORM倾向于直接使用或在某种DAL存储库后面使用(可能是为了将来可以将它们换掉)。
我不喜欢直接使用ORM,因为它很难换掉,但我同样没有失去它提供的完整域名更改跟踪的粉丝!
过去我会为我的域中的每个对象编写一个数据映射器类(Fowler),但我已经通过经验了解到这个CRUD编码大约耗费了我1/3的时间。
我意识到改变我的数据访问策略是不太可能的(我以前从未这样做过)但我真的担心通过直接使用ORM我会锁定自己使用它直到时间结束。
我一直在考虑在一个通用的ORM容器中包装ORM(还没有关于ORM本身的决定),并将其传递给每个域对象的finder类。但是,我完全不确定通用的ORM包装器类是什么样的!
有人在这里有任何现实生活建议吗?请不要觉得糖衣你的答案是不必要的!!
答案 0 :(得分:0)
存储库有许多功能:
另一个将ORM归类的容器感觉就像是对我过度工程化。正如您所指出的那样,您不太可能改变您的底层实现,但如果您这样做,您的存储库似乎是合理的地方。
答案 1 :(得分:0)
在这些问题上指向一个比我更聪明的人的方向,Ayende在他的博客文章The false myth of encapsulating data access in the DAL中强调的具有通用ORM包装器的问题之一是不同的ORM本质上太不同了有效地封装,有不同的交易处理方法等。
最重要的是,无论如何切换ORM真的没什么意义 - 在变更的情况下封装DAL的主要原因之一是应对交换数据库,但是大多数现代ORM能够与许多不同的ORM一起工作数据库无论如何。