我应该为创建和更新设置不同的DTO吗? (CRUD)

时间:2017-09-06 10:36:36

标签: c# .net entity-framework dto

我正在使用Person实体上的常规CRUD操作设计Web API。

问题在于我不知道如何设计DTO。

该实体如下:

public class Person 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

我已经确定DTO应该有相同的成员:

public class PersonDto 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age{ get; set; }
}

这对于Update操作有意义,但是Create呢? Id是由Create操作ifself创建的,因此在DTO中具有Id并不符合语义。

我应该创建2个不同的DTO,一个是Id而另一个没有Id?

什么是最好的选择?您是否有创建和更新的不同DTO?

2 个答案:

答案 0 :(得分:1)

您可以使用任何一种方式。如果您在每次操作中使用单独的DTO - 它会编写大量代码(和时间花费)。我更喜欢将一个DTO用于所有操作,并在需要时创建其他操作。

答案 1 :(得分:1)

您不需要其他DTO进行创建操作。您只需设置用于创建新对象的默认值(id = 0)。这将帮助您确定是否尚未在数据库中创建对象,以备不时之需。但是,如果您将ID为零的DTO传递给创建操作的方法,那么您将永远不会遇到任何问题。