在将数据从表示层中的用户界面传递到应用层然后传递到域层进行验证时,我对应该使用什么表单数据感到困惑。我正在通过 DTO,但我听说我不应该。相反,我应该只将原语和标量传递给域层。如果不使用 DTO 类结构,我不确定这是如何完成的。下面是我在 UI 中使用 DTO 的方式:
我的用户界面在屏幕上可能具有如下值:
产品名称: 产品ABC
产品编号:1234
描述:描述
当用户单击提交按钮将此记录添加到数据库时,我构建了一个 DTO,如下所示:
public class NewProductDto
{
public string ProductName {get;set;}
public string ProductCode {get;set;}
public string Description {get;set;}
}
我将此 DTO 传递给应用程序层,然后传递给域层,在那里它读取值以验证并创建实体的新实例。
如果我不应该这样做,那么应该如何打包来自 UI 的值以供应用层接收并发送到域层以执行验证和创建新实体?
也许只是一个简单的数据结构?
struct NewProduct
{
public string ProductName;
public string ProductCode;
public string Description;
}
struct NewProduct aNewProductStructure;
(即 CreateNewProduct(aNewProductStructure) 而不是 CreateNewProduct(aNewProductDto) ?
提前致谢。
---------- 更新 2/24/2016 上午 9:58
好的,根据我忽略的最近信息,应用程序层似乎应该从 UI 接收 DTO,然后将其转换为片段以传递给域。因此,在我上面的示例中,应用层应该将要创建的新产品按如下方式传递给域层:
CreateNewProduct(ProductName, ProductCode, Description);
CreateNewProduct 的定义:
public int CreateNewProduct(string ProductName, string ProductCode, string Description)
{
....
}
基本上,我应该将各个值传递给域。