我正在一個.net 3.5網站application.It有各種模塊比方說客戶,訂單等....我需要設計的數據訪問層(DAL)的同樣使用Enterprise Library 4.0(使用數據訪問應用程序塊或DAAB)連接到SQL Server 2005.下面是我打算如何去做的:DAL設計使用DAAB 3.5/4.0
•有一個名爲「IDataService」的接口。 「的ExecuteReader()」, 「的ExecuteScalar()」, 「的ExecuteNonQuery()」, 「AddParams」,等等...基本上,這個接口將幾乎看起來像DAAB的。
•有一個名爲「DataService」的類來實現此接口。該類將用作DAAB的包裝,並且每個方法都將在DAAB內部使用相應的方法。
•擁有像客戶,數據等業務類(或數據容器),它們的屬性將映射到數據庫中相應的表屬性。
•對於每個模塊(如CustomerDataService,OrdersDataService等)都有DAL類。每個類都有構造函數代碼,我將在其中實例化DataService類,如下所示:IDataService dataService = new DataService()此外,每個類都將具有如下方法:GetCustomerDetails()AddCustomer()RemoveCustomer()UpdateOrder等。這些方法將內部使用「dataService」對象對數據庫ExecuteReader,ExecuteNonQuery等進行任何操作。
•爲每個模塊都有一個映射器類「CustomerMapper」, 「OrderMapper」 等。這些類將採用數據源(例如IDataReader)作爲輸入,並將填入泛型集合(List)中的數據。這些映射器類將由相應的Dataservice類在內部調用,以將類型安全的集合返回給調用客戶端。
•有一個像DbHelper這樣的助手類,它可以完成「處理DBNull案例」,「存儲存儲過程名稱」等任務。
•DataService類將由BusinessLogic層類使用,即CustomerBusiness,OrdersBusiness等。
•業務邏輯層將集合返回到表現層。
這是否設計合理?什麼是這種方法的優點/缺點是什麼?我能想到這種方法的好處是,所有DataService類總是支持程序對接口「IDataService」,而不需要知道如何「的DataService」類在未來實現internally.So,如果我刪除DAAB並使用另一個API裏面我DataService類,客戶端代碼不需要改變。 另外,我可以添加任何方法在我的IDataService接口,這是不存在的DAAB ....例如BatchUpdate()...
請糾正我,如果我錯了。
如果使用T4模板創建自己的映射類,那麼維護它們的工作就會少得多。而且,我想,你會發現很多其他東西,你可以使用T4模板來創建。 – GRGodoi 2009-07-17 21:42:32