应用程序使用ADO.NET为几乎每个数据库操作调用sprocs。其中一些sprocs也包含相当数量的域逻辑。每个域实体的数据访问逻辑驻留在域类本身中。即,域逻辑和数据访问逻辑之间没有解耦。
我希望完成以下任务:
这是我将单个类转换为NHibernate持久性的方法
我遇到的问题是#1和#4。
(#1)如何映射没有NHibernate映射的类型的属性?
考虑具有Address属性的Person类(Address是没有NH映射的域对象,Person是我正在映射的类)。如何在Person映射中包含Address而不为Address创建整个映射?
(#4)在过渡期间如何管理旧数据访问逻辑的依赖?
域模型中的类使用我想要删除的旧数据访问逻辑。考虑具有CustomerId属性的Order类。当订单需要客户信息时,它会调用驻留在Customer类中的ADO.NET数据访问逻辑。除了依赖类本身映射之前,还有哪些选项可以维护旧的数据访问逻辑?
答案 0 :(得分:1)
我会这样做:
步骤1& 2是最难的部分,因为它听起来像你有紧耦合,理想情况下永远不会发生。前两个步骤都没有涉及NHibernate。在尝试更换数据层之前,您正在严格转向更易于维护的体系结构。
虽然可以逐个创建NHibernate映射并在没有完整对象图可用的情况下使用它们,但这似乎要求不必要的痛苦。如果你选择那条路,你需要非常谨慎地进行,我不会推荐它。为此,您可以将外键映射为普通的int / guid,而不是作为与另一个域类的关系,但是您必须非常小心,不要以这种方式将一半的数据提交给NHibernate。自动化单元/集成测试是您的朋友。
交换数据层很难。如果你有一个坚实的最小公分母数据层架构会更容易,但我实际上不建议使用最小公分母方法创建架构。松耦合很好,但你可以走得太远。
答案 1 :(得分:0)
在互联网上搜索更多关于nhibernate电子书的信息