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

我正在使用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用于创建和更新?

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

你可以使用任何一种方式。 如果你每次操作都使用单独的DTO – 那就是大量的代码编写(以及时间花费)。 我更喜欢将一个DTO用于所有操作,并在需要时创建其他操作。