sql-server - server優點 - sqlite sql server比較




建議使用NHibernate在同一個ASP.NET應用程序中支持Oracle和SQL Server (2)

我們的客戶希望在下一個項目中同時支持SQL Server和Oracle。 我們的經驗來自.NET / SQL Server平台。 我們將聘請Oracle開發人員,但我們擔心的是DataAccess代碼。 NHibernate會使數據庫引擎對我們透明嗎? 我不這麼認為,但是我想听聽面臨類似情況的開發者。

我知道這個問題有點含糊,因為我沒有Oracle的經驗,所以我不知道我們會發現什麼問題。


你可以通過遵循一些基本的實踐來輕鬆地使用NHibernate來使你的應用程序與數據庫無關:

  • 首先設計您的對像模型。
  • 不要使用任何數據庫特定的代碼。 您需要具有良好C#經驗的人員,而不是Oracle開發人員。 不要依賴觸發器,存儲過程等東西
  • 讓NHibernate至少最初生成DB模式(你可以稍後調整索引)它將為每個DB選擇最好的可用數據類型。
  • 使用DB不可知的POID生成器( hiloguid )而不是序列或標識。
  • 盡量避免使用SQL。 HQL和Linq在99%的情況下都能正常工作。
  • 避免所有目標數據庫不支持的NH功能(例如Future,MultiCriteria等)

NHibernate有一個很好的社區。 您可以隨時在http://groups.google.com/group/nhusers中提問您的問題,除了張貼在這裡。


有三件事情要考慮 - ISession對象,生成的SQL查詢和映射到表的plain-old-clr對象。

NHiberante將根據所選的數據庫方言生成所需的SQL查詢。 如果您將NHibernate配置為使用SQL Server方言,則會生成SQL Server正確的SQL語句。 這可以根據配置在運行時動態配置。

您還需要配置會話以連接到正確類型的數據庫。 同樣,各種配置方法可以支持在運行時動態創建ISession。

映射到表的實際數據對像不需要根據數據庫選擇進行更改。 NHibernates的優勢之一是通過(相當)簡單的配置更改和一些前期的架構思想來支持多個數據庫。

請參閱http://codebetter.com/blogs/karlseguin/archive/2009/03/30/using-nhibernate-with-multiple-databases.aspx ,以了解如何將底層數據庫從創建和使用NHibernate的。







nhibernate