6

我正處於規劃將大型經典ASP數據庫應用程序轉換爲ASP.Net的早期階段,並且無法找出使用哪種數據訪問方法。我玩過Linq To SQL,動態數據,強類型數據集,企業庫(數據訪問應用程序塊),以及一點Entity Framework,但他們都沒有跳出來作爲「一個」。有太多的選擇 - 我的頭在游泳,幫我選擇!需要關於選擇數據訪問方法的建議

也許這將有助於使上,我與優先轉換沿應用程序的一些背景...

  • 後端爲Microsoft SQL Server(2005或更高版本)和我們承諾那樣,所以我不必擔心曾經支持過不同的數據庫平臺。

  • 數據庫非常成熟,包含了大量的業務邏輯。它高度規範化並廣泛使用存儲過程,觸發器和視圖。我寧願不在同一時間重新創建兩個輪子,所以我想盡可能少地更改數據庫。所以,我需要選擇一種足夠靈活的數據訪問方法,以便我能夠解決數據庫中的任何怪癖。

  • 該應用程序有許多數據輸入表單和廣泛的搜索和報告功能(報告是我將在以後解決的另一個野獸)。

  • 該應用程序需要足夠靈活以處理對數據庫結構的微小更改。應用程序(和數據庫)可能安裝在對數據庫進行較小自定義修改的不同站點上。理想情況下,應用程序可以識別數據庫擴展並做出適當的反應換句話說,如果我需要在應用程序中存儲O/R映射,那麼在新站點上安裝應用程序和數據庫時,我需要能夠將其交換(或輕鬆刷新)。

  • 快速應用程序開發至關重要。由於數據庫已經完成並且用戶界面將與現有的應用程序緊密匹配,我希望能找到一些可以快速解決這個問題的方法。如果能夠節省開發時間,我願意犧牲不使用絕對最新最好的技術。換句話說,如果使用像Entity Framework這樣的東西有一個陡峭的學習曲線,那麼我會很好地處理像強類型數據集和自定義DAL,如果它會加快這個過程。

  • 我是ASP.Net的總新手,但我非常熟悉經典ASP,T-SQL和舊的ADO(例如斷開的記錄集)。如果任何數據訪問方法更適合來自我的背景的人,我可能會傾向於這個方向。

感謝您提供任何建議!

回答

1

nHibernate可能是個不錯的選擇。您可以將映射存儲在可以解決您的需求的外部配置文件中。另一個選項可能是使用ActiveRecord,它基於nHibernate。

nHibernate有一個整潔的功能,您可能會發現有幫助。它被稱爲動態屬性,它基本上是通過從映射文件中提取列名填充的名稱值對集合。所以當你在你的客戶端添加一個列時,你更新了映射文件,你就可以通過對象的集合來訪問數據。

+0

有很多方法可以做同樣的事情,我想看看哪種工具對其他產品有好處(即何時使用哪一種)?以及對某些參數的工具評估(例如學習曲線,維護,簡單性,社區支持等) – shahkalpesh 2009-04-23 16:40:54

+0

我聽說nHibernate功能非常強大,但我也讀了一下,學習曲線非常陡,以便使用它正確的方法。不幸的是,我們沒有那種時間。 – CowherPower 2009-04-23 18:09:46

+0

你有多少時間?我花了幾天的時間才弄清楚如何映射我的第一個對象圖3。我是1的開發人員,聽起來像你有一個團隊。 – JoshBerke 2009-04-23 21:58:21

2

您可能希望查看從asp層解耦數據庫層,這樣您不僅可以提供更多靈活性來做出決定,但是當您必須對客戶數據庫進行更改時,您可以交換新的DLL沒有改變任何東西。

通過使用依賴注入,您可以使用xml來告訴框架接口使用哪個具體類。

這樣做的好處是你可以使用一種數據庫方法,如果你以後決定改變爲另一種方法,那麼你可以改變dll並繼續,而不需要對其他圖層做任何改變。

由於您更熟悉它,爲什麼不直接通過建立自己的連接直接訪問數據庫呢?然後,您可以移動代碼的其餘部分,並沿着可以決定使用哪一種技術的方式。

對於我正在開發的新應用程序,我開始使用LINQ to SQL,主要是因爲開發速度會更快,但是,如果我決定不滿足需求,我將只交換它。