针对服务包装数据源的ORM

时间:2010-05-20 21:57:07

标签: web-services nhibernate orm

我们的任务是迁移现有的一组实体(目前POCO坚持使用NHibernate对抗MSSQL数据库)现在仍然存在某种类型的Web服务(尚未构建,基于REST或基于SOAP,我们控制)。

我喜欢NHibernate如何封装持久性问题,并让我们维护一个逻辑丰富,持久性不可知的域模型。有没有办法让NHibernate直接与后端的Web服务交谈,而不是直接与SQL数据库交谈?换句话说,可以将“服务而不是SQL数据库”视为持久性实现细节,并允许我们继续使用NHibernate吗?

我问的是正确的问题吗? :)

2 个答案:

答案 0 :(得分:1)

NHibernate是一个ORM。它在对象和关系表之间进行映射。它不映射对象和Web服务。您需要为面向持久性的Web服务使用不同的API。您可以创建一组由NHibernate层(用于关系数据库)和Web服务层实现的接口,使其看起来像是一个API。

答案 1 :(得分:0)

这个问题是有效的,但遗憾的是答案是否定的。理想情况下,您可以设计服务以返回与服务使用者相关的对象,并使用NHibernate从数据库中获取数据,然后服务可以使用该数据返回给使用者。

我实际上正在阅读一篇有趣的文章,关于前几天通过您的服务层公开您的数据。 http://davybrion.com/blog/2010/05/why-you-shouldnt-expose-your-entities-through-your-services/这是一个有趣的视角,了解服务在为您的应用程序提供数据方面的作用。