我最近开始一个新的Webforms项目,并决定将业务类与任何DBML引用分开。我的业务层类访问离散的数据层方法,返回DTO集合。因此,数据层可能会像以下这样投影DTO:
(from c in dataContext.Customers
where c.Active == true
select new DTO.Customer
{
CustomerID = c.CustomerID,
Name = c.CustomerName,
...
}).ToList()
尽管构建DTO对象需要付出额外的工作,但这似乎是在业务层和数据层之间实现紧密绑定的更好方法,并且我可以在没有数据库的情况下测试业务层。
我的问题是,这是否是良好的实践?是否有一种生成DTO的方式(也许通过SQLMetal),以及随着项目进展可能会遇到什么其他问题。