我们的客户希望在下一个项目中同时支持SQL Server和Oracle。我们的经验来自.NET / SQL Server平台。我们将聘请Oracle开发人员,但我们关心的是DataAccess代码。 NHibernate会让数据库引擎对我们透明吗?我不这么认为,但我想听听面临类似情况的开发人员。
我知道这个问题有点模糊,因为我没有Oracle经验,所以我不知道会发现什么问题。
答案 0 :(得分:8)
通过遵循一些基本实践,您可以轻松使用NHibernate使您的应用程序与数据库无关:
hilo
或guid
)代替序列或标识。NHibernate有一个很棒的社区。除了在此处发帖,您始终可以在http://groups.google.com/group/nhusers中提出您的问题。
答案 1 :(得分:1)
要考虑三件事 - ISession对象,生成的SQL查询以及映射到表的普通旧clr对象。
NHiberante将根据所选的数据库方言生成所需的SQL查询。如果将NHibernate配置为使用SQL Server方言,它将生成SQL Server正确的SQL语句。这可以在运行时根据配置轻松动态配置。
您还需要配置会话以连接到正确类型的数据库。同样,各种配置方法可以在运行时支持动态ISession创建。
映射到表的实际数据对象不需要根据数据库选择进行更改。 NHibernates的优势之一是它通过(相当)简单的配置更改和一些前期架构思想来支持多个数据库所提供的灵活性。
有关如何从NHibernate的创建和使用中抽象出底层数据库的一些示例,请参阅http://codebetter.com/blogs/karlseguin/archive/2009/03/30/using-nhibernate-with-multiple-databases.aspx。