我有一个用 C# 编写的分层应用程序 -
前端 - (获取页面
Customers
)商务 - (
CustomerService
和Customer
班级)数据合同 - (
CustomerDTO
)数据访问 - (
UnitOfWork
和Repositories
)
数据库有一个包含一百多列(很多是冗余的)的 Customer 表,所以我使用 DTO 在业务层填充 Customer 对象。在Customer 类中,我也将许多字段的名称从它们的数据库名称中更改,例如ID 更改为CustomerID,FName 更改为Firstname。
前端使用业务层的服务来获取客户,例如GetAll(), GetByID(int customerID).
我也想在GetPaged method
下面提供一个类似的。
客户服务类
public IEnumerable<Customer> GetPaged(
Func<IQueryable<Customer>, IOrderedQueryable<Customer>> orderBy,
int skip,
int take)
{
foreach (var customerDTO in
unitOfWork.CustomerRepository.GetPaged(orderBy, skip, take))
{
yield return new Customer(customerDTO);
}
}
但这行不通,因为CustomerRepository
期望orderBy
基于CustomerDTO
not the Customer
。
我不想让前端知道任何关于CustomerDTO
.
我怎样才能做到这一点?