我想写一个BLL和DAL之间有非常严格界限的小应用程序,现在想知道通过数据(域传输对象)之间传递数据的最佳方式层。如何在UI,BLL和DAL之间使用DTO
我在BLL和DAL都访问的域级(类库)中实现了一些类。这些类基本上只包含属性/数据成员,并且当前反映了DAL数据。例如:
class CustomerData
{
// some data fields
}
然后,我实现了一些班BLL为:
class Customer : CustomerData
{
// Some methods
}
在我DAL我通过的LINQ到SQL从数据库中获取客户记录。然后,我通过LINQ对象映射到我的域对象:
CustomerData.field = LinqObject.field
// Etc
我的想法是这样,我现在从我DAL到BLL一个CustomerData实例请求时(和我应该通过一个客户实例,以我的UI)。
在我的BLL中,我将因此收到一个CustomerData实例,但现在我想让它成为一个Customer。
问题:
- 我必须在我的BLL现在创建一个客户实例,并再次复制所有字段成员?
客户c =新客户; c.field = CustomerData.field; - 如何在不使用字段复制步骤的情况下从CustomerData创建客户?
- 我应该宁愿用组合吗?
class Customer Customer Data Data; } - 有没有一种更有效的方法(少编码等)来做到这一点在我目前的布局?
- 有没有更好的方法来做到这一点?
- 任何意见一般吗?
谢谢!
尤拉的答案+8为#1。像这样的猴子编码可能对你来说看起来很痛苦。最终实际上是错误的做法,因为它增加了错误的程度,并使得事情在$$中变得如此痛苦。尝试ValuInjector - 许多人喜欢它比AutoMapper更好,更轻量。不要重复使用你的映射。 – FastAl 2013-10-02 01:59:16