应用程序使用ADO.NET为几乎每个数据库操作调用sprocs。其中一些sprocs也包含相当数量的域逻辑。每个域实体的数据访问逻辑驻留在域类本身中。即域逻辑和数据访问逻辑之间没有解耦。如何从现有的ADO.NET持久性逻辑中逐渐过渡到NHibernate持久性逻辑?
我期待完成以下任务:
- 从数据访问逻辑分离的域逻辑
- 让域模型持久无知
- 逐步实现跨版本过渡到NHibernate的,重构DAL的单独部分(如果你可以这样称呼的话)
这里是我的将单个类过渡到NHibernate的方法p ersistence
- 创建域类
- 的映射创建域类的储存库(基本CRUD操作从一个普通的碱库继承)
- 在由所使用的存储库用于每个存储过程创建一个方法老DAL(做一些重构一起拉出域逻辑的方式)
- 修改消费者使用的存储库,而不是数据访问逻辑类本身
- 删除旧数据访问逻辑和存储过程
我遇到的问题是#1和#4。 (#1)如何映射没有NHibernate映射的类型的属性?
考虑具有Address属性的Person类(Address是没有NH映射的域对象,Person是我映射的类)。如何在人员映射中包含地址而不创建地址的整个映射? (#4)在转换过程中,如何管理旧数据访问逻辑的依赖关系?
域模型中的类利用我期望删除的旧数据访问逻辑。考虑具有CustomerId属性的Order类。当Order需要客户信息时,它调用驻留在Customer类中的ADO.NET数据访问逻辑。除非维护旧的数据访问逻辑,除非依赖类自己映射,否则还有哪些选项?