我应该为创建和更新设置不同的 DTO 吗? (增删改查)
Should I have different DTOs for Create and Update? (CRUD)
我正在设计一个 Web API,其中包含对 Person 实体的常规 CRUD 操作。
问题是我不知道如何设计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; }
}
这对于更新操作是有意义的,但是对于创建呢?
Id 是由 Create 操作 ifself 创建的,因此在 DTO 中有一个 Id 不符合语义。
我是否应该创建 2 个不同的 DTO,一个有 Id,另一个没有 Id?
最好的选择是什么?您是否有用于创建和更新的不同 DTO?
您可以使用任何一种方式。如果您为每个操作使用单独的 DTO - 这会导致大量代码编写(和时间花费)。我更喜欢对所有操作使用一个 DTO,并在需要时创建其他 DTO。
创建操作不需要另一个 DTO。您只需设置默认值 (id=0) 即可创建新对象。这将帮助您确定是否尚未在数据库中创建对象,以防万一。但是,如果您将 ID 为零的 DTO 传递给用于创建操作的方法,您将永远不会遇到任何问题。
我正在设计一个 Web API,其中包含对 Person 实体的常规 CRUD 操作。
问题是我不知道如何设计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; }
}
这对于更新操作是有意义的,但是对于创建呢? Id 是由 Create 操作 ifself 创建的,因此在 DTO 中有一个 Id 不符合语义。
我是否应该创建 2 个不同的 DTO,一个有 Id,另一个没有 Id?
最好的选择是什么?您是否有用于创建和更新的不同 DTO?
您可以使用任何一种方式。如果您为每个操作使用单独的 DTO - 这会导致大量代码编写(和时间花费)。我更喜欢对所有操作使用一个 DTO,并在需要时创建其他 DTO。
创建操作不需要另一个 DTO。您只需设置默认值 (id=0) 即可创建新对象。这将帮助您确定是否尚未在数据库中创建对象,以防万一。但是,如果您将 ID 为零的 DTO 传递给用于创建操作的方法,您将永远不会遇到任何问题。