我正在设计一个访问存储在数据库中的一些数据的 WCF 服务。
对数据库的实际访问由一些 ORM 层处理(目前是NHibernate,但这是一个实现细节)。
我想知道这种场景的正确设计是什么?
天真的方法是这样的:
public class ServiceImplementation : IService
{
// NHibernate session
private ISession session;
// service methods that use *session*
}
这专门与 NHibernate 耦合,并强制服务类管理初始化并拥有 ORM 逻辑代码。
我的问题特别是:
- 如何实现服务与 DB/ORM 层解耦的解耦设计?
- 何时以及由谁初始化数据库访问/ORM 层?服务管理吗?
由于这是一种常见的情况,我假设存在一些“模式”/最佳实践。
在线提供的大多数示例都演示了如何实现这一点(如何使用 ORM 访问数据库等),但没有从设计的角度在更大范围内正确地完成这一点。