我正在開發的ASP.NET應用程序的要求之一是要與數據庫無關的;也就是說,能夠與大量的數據庫引擎進行交流,而無需對代碼進行重大更改。我已經知道解決方案的第一部分涉及在接口後面抽象DAL(數據訪問層),並且可以在不更改代碼的情況下替換DAL,但是我面臨的問題是如何實現DAL。數據庫不可知的ASP.NET應用程序?
研究已經在這方面是非常不確定的,但它告訴我,我有兩個選擇:
- 使用ORM(如實體框架或小巧玲瓏)
- 在ADO.NET 完全 寫它
實體框架很簡單,但似乎一旦生成模型,EF就不會允許我更改其目標數據庫引擎。 OTOH在ADO.NET中編寫了許多DAL(每個目標引擎都有一個DAL),這使我具有了這種靈活性,但是我一直從頭開始編寫所有的東西。
所以,我有以下問題:
- 有沒有一種方法,使EF再跟上運行不同的數據庫引擎?
- 如果沒有,是否有任何支持多個數據庫引擎的成熟,穩定的ORM?
在此先感謝。
我不確定你的意思是「在運行時」和「在飛行中」。除了實體框架,Dapper和核心ADO.NET,NHibernate是另一種選擇。 它幾乎支持所有常用的數據庫。它有助於將數據訪問層與業務邏輯或應用程序層分開。它被廣泛使用和積極開發。負面的一點是它的學習曲線。 –