2017-07-14 85 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类,以便所有其他项目都可以访问它们。数据层中的模型类和其他项目中的视图模型都可以使用此接口。

相关问题