2017-07-14 84 views
0

我不確定是否有這樣的問題。但我沒有找到它 所以基本上我所擁有的是一個三層Web應用程序(MVC),其中有幾個程序集定義了BLL和DAL。 對於定義的每個Db實體,我創建了數據傳輸對象以通過BL層,但是在某些情況下,我需要以DataPortion類內部分的形式返回數據(定義了有限列表和所有數據的量由查詢檢測到。 DataPortion在3層應用程序中傳輸分頁數據

的 接口
public interface IDataPortion<TItem> where TItem : class 
{ 
    IEnumerable<TItem> Items { get; } 
    int TotalCount { get; } 
} 

這裏,在這樣

IDataPortion<TEntity> Get(int page, int pageSize); 
IDataPortion<TEntity> GetByAuthor(string uid, int page, int pageSize); 

所以它返回DataPortion類型BL層返回的數據。將數據返回到表現層,所有的實體之前,庫的方法簽名的例子被映射到DTO對象,但我支持什麼sed如何處理這個DataPortion?我不能直接從介紹l-r引用DAL繞過BL程序集。

所以我的問題是:我應該建立某種形式的DTO爲DataPortion,這樣

PagedResult<TItem> 
{ 
    IEnumareble<TItem> Items { get; } 
    int TotalCount { get; } 
} 

而且比它映射到IDataPortion實施? 或者我應該避免從DAL傳輸此類數據並分別返回totalCount和項目列表?通過使用DataPortion,我試圖避免在我的倉庫中創建方法或屬性(如「DelegationByAuthorAndCreationDateCount」)。

回答

1

您不應該直接將數據層組件(例如模型)暴露給表示層。爲了將數據傳輸到表示層,您可以使用DTO,視圖模型等。在您的情況下,您可以創建另一個名爲「橫切」的項目,其中包含幫助程序,視圖模型,通用對象,DTO等。所有其他項目都可以引用「橫切」。您可以移動IDataPortion接口和DataPortion類,以便所有其他項目都可以訪問它們。數據層中的模型類和其他項目中的視圖模型都可以使用此接口。

相關問題