2009-02-25 44 views
3

我需要設計一個數據訪問層DAL .NET企業庫3.5版的數據訪問應用程序塊(DAAB) 在我的應用程序,我已經像登記,結算,訂單管理,用戶管理各種邏輯模塊, etc 我正在使用C#業務實體將模塊對象映射到數據庫表,然後將List集合返回給客戶端。DAL設計問題

我想設計我的DAL以這樣的方式,如果明天我們決定使用一些其他數據訪問框架內,我們應該有最少的代碼改變。 鑑於此,我如何設計我的班級結構? 我想我有一個類DbManagerBase這將是在現有的.NET DAAB 該類DbManagerBase將實施名爲IDbManagerBase的接口這將對公共方法的ExecuteReader一樣,的ExecuteNonQuery等

客戶端類即包裝。 RegistrationDAL,UserManagermentDAL將具有內部每個方法如下代碼: IDbManagerBase OBJ =新DbManagerBase() obj.ExecuteReader(myStoredProcName) 。 。 。 這是一個很好的OOPS設計嗎?我可以知道任何更好的方法嗎?還是我需要在這裏使用繼承? 我可以在DbManagerBase類RegistrationDAL所有方法,靜態UserManagermentDAL課嗎?我想,如果我的方法是靜態的,然後上面的界面代碼不會讓任何意義......嗎???

回答

2

要回答幾個問題:

我可以在 DbManagerBase類的所有方法和 RegistrationDAL,UserManagermentDAL 類作爲靜態的?

我可能會與導致其非靜態的方法去使靈活性,以DALS(例如,你可以創建一個工廠它們的實例),也將讓你有兩個更好的控制實例DAL以更清晰的方式與不同的數據庫進行交流。你也不需要在每個對象中創建一個DbManagerBase的實例,因爲它將是一個實例成員。具有的ExecuteReader,和的ExecuteNonQuery obj.ExecuteReader(myStoredProcName)

關於IDbManagerBase

我會小心烘烤約數據庫中的特定概念的知識的地方太多。請記住一些數據庫不支持存儲過程。

另一點是,之前我去有關實現各種各樣的DAL我將來一定會通過其他開源DALS像NHibernate的或亞音速一些代碼來讀取。他們完全有可能解決您的業務問題並顯着縮短您的開發時間。

如果你正在尋找一個分層架構DAL一個小例子,還有就是我little project on github(這是很基本的,但顯示瞭如何建立接口,支持很多深奧的數據庫)