我正在尝试编写一个具有非常严格的BLL和DAL之间边界的小应用程序,现在想知道传递数据(域传输对象)层之间的最佳方法。
我在一个域级别(类库)中实现了一些类,这些类可以被BLL和DAL访问。这些类基本上只包含属性/数据成员,目前反映了DAL数据。例如:
class CustomerData
{
// some data fields
}
然后我在BLL中实现了一些类,如下:
class Customer : CustomerData
{
// Some methods
}
在我的DAL中,我通过Linq-to-Sql从数据库中获取客户记录。然后,我通过以下方式将linq对象映射到我的领域对象:
CustomerData.field = LinqObject.field
// Etc
我的想法是当需要时,我会从我的数据访问层(DAL)向业务逻辑层(BLL)传递一个CustomerData实例(并且我应该向用户界面(UI)传递一个Customer实例)。
因此,在我的BLL中,我将接收到一个CustomerData实例,但现在我想用它来创建一个Customer。
问题:
1. 我是否必须在我的BLL中创建一个Customer实例,并再次复制所有字段成员? Customer c = new Customer; c.field = CustomerData.field;
2. 如何从CustomerData创建一个Customer而不进行字段复制步骤?
3. 是否应该使用组合? class Customer { CustomerData Data; }
4. 在当前布局中,有没有更有效的方法(较少编码等)来完成这个任务?
5. 有更好的方法吗?
6. 总的评论?
谢谢!