使用NHibernate在同一ASP.NET应用程序中支持Oracle和SQL Server的建议

Hug*_*ata 9 sql-server oracle nhibernate

我们的客户希望在下一个项目中同时支持SQL Server和Oracle.我们的经验来自.NET/SQL Server平台.我们将聘请Oracle开发人员,但我们关心的是DataAccess代码.NHibernate会让数据库引擎对我们透明吗?我不这么认为,但我想听听面临类似情况的开发人员.

我知道这个问题有点模糊,因为我没有Oracle经验,所以我不知道我们会发现什么问题.

Die*_*hon 8

您可以通过以下一些基本实践轻松使用NHibernate使您的应用程序与数据库无关:

  • 首先设计对象模型.
  • 不要使用任何特定于数据库的代码.您需要具有良好C#经验的人,而不是Oracle开发人员.不要依赖触发器,存储过程等东西.
  • 让NHibernate至少在最初生成数据库模式(您可以稍后调整索引之类的内容)它将为每个数据库选择最佳可用数据类型.
  • 使用DB不可知的POID生成器(hiloguid)代替序列或标识.
  • 尽量避免使用SQL.HQL和Linq在99%的情况下都能正常工作.
  • 避免所有目标数据库都不支持的NH功能(例如,Future,MultiCriteria等)

NHibernate有一个很棒的社区.除了在此处发布之外,您始终可以在http://groups.google.com/group/nhusers中提出您的问题.