1

當前,如果我們想要從數據庫中獲取記錄列表,我們的DAL將DataTable返回給我們的業務層,然後將相同的DataTable返回給我們的調用接口(在本例中爲asp .vb頁面)。返回強類型的存儲過程結果

但是我不相信我們應該從BLL中返回一個DataTable,我一直認爲最好根據存儲過程中的字段返回一個強類型的集合,例如

public Class MyCustomType 
    public customerId as int32 
    public name as string 
end Class 

public function GetCustomers() as Generic.ICollection(Of MyCustomType) 
    //call to DAL here 
end function 

會實現這一目標的最佳方式來遍歷我們的數據表,併爲每個DataRow中,創建一個新的MyCustomType對象,並將其添加到集合,然後返回集合?

謝謝。

回答

1

下面是一個實用程序的鏈接,可以幫助數據表映射到MyCustomType對象:

http://www.eggheadcafe.com/articles/20040221.asp

這是一個有點老了,但可能會有所幫助。也許還有其他一些工具,比如AutoMapper。

+1

我下載了AutoMapper,它比文章中的例子快得多,即使它使用反射而不是屬性屬性。謝謝。 – 2010-10-27 11:43:03

1

這就是我們工作的地方。在我們的例子中,我們得到一個DataReader並手動填充類實例的字段。我們還從List<MyClass>中派生出一個新的列表類型以便與之一起使用。確保你做了適當的檢查DBNull.Value和適當的轉換和所有。

+0

對downvote沒有評論? – lincolnk 2010-10-26 21:02:26

2

看來你的設計正試圖分開責任,但中途停下來。將DataTable模糊地返回到表示層隱含地將其耦合到數據源的特定模式知識。 DataTable很可能包含演示文稿甚至不需要的信息。處理BLL中的細節並向PL中返回一個強類型的有目標對象與您試圖設計的模型更加一致。

相關問題