我有一个 MVC3 NHibernate/ActiveRecord 项目。该项目进展顺利,我的模型对象(主要是一个包含三个或四个类的巨大层次结构)得到了一些使用。
我的应用程序是基于分析的;我存储分层数据,然后将其切片,以图表形式显示等,因此实际关系并不那么复杂。
到目前为止,我还没有从 ORM 中得到太多好处;它使查询变得容易(ActiveRecord),但与完整对象相比,我通常需要更少的信息,并且我需要通过复杂和多次选择以及对集合的迭代来编写“硬”查询——原始 SQL 会更快、更清晰。
所以我正在考虑在这种情况下放弃 ORM,并回到原始 SQL。但我不确定如何重新构建我的解决方案。我应该如何处理数据库层?
- 我是否应该每个模型仍然有一个类,并使用静态方法来查询对象?或者我应该有一个代表数据库的类?
- 我应该在 ActiveRecord 下编写自己的层(或我自己的类似 ActiveRecord 的实现)以保持现有代码或多或少的健全吗?
- 我是否应该将 ORM 方法(如保存/删除)组合到我的模型类中?
- 我应该改变我的表结构(每个类一个表,所有字段)?
任何意见,将不胜感激。我正在尝试找出最好的架构和设计。