例如:“学生”是域模型,我直接在我的API Action方法中使用“学生”对象。
// Domain Model.
pubic class Student
{
public int Id { get; set; }
public string FirstName{ get; set; }
public string LastName { get; set; }
public string Gender{ get; set; }
public DateTime? BirthDate { get; set; }
}
//Simple API method that Add new student details to the database.
[HttpPost]
public IHttpActionResult GetStudents(Student student)
{
if (!ModelState.IsValid)
return BadRequest();
_context_.student.Add(student);
_context_.SaveChanges();
return Created(new Uri(Request.RequestUri + "/"), student.Id);
}
答案 0 :(得分:3)
有时域模型包括复杂的类型。
public class Student
{
//...
public ICollection<Course> Courses { get; set; }
}
public class Course
{
public int Id { get; set; }
//...
}
这可能无法使客户满意。您必须序列化域对象或使用DTO展平该对象。
答案 1 :(得分:1)
很好,因为DTO就是数据传输对象。除非您的视图有不同的需求,否则使用基于DTO的模型就可以了。
答案 2 :(得分:1)
这确实可以节省您将来的时间。我的意思是,如果您要开发长期的解决方案,则必须使用DTO
并使代码更加结构化。您必须具有不同的层。像数据层,表示层,业务层等。所有这些层都应该是独立的。如果使用DTO
,则可以创建更多特定的实体。无需混淆您的业务逻辑。
我也看到了这个article。可能会为您提供一些示例,其中DTO
可以为您提供帮助。
DTO(数据传输对象)是用于移动数据的数据容器 层之间。它们也称为传输对象。仅DTO 用于传递数据,不包含任何业务逻辑。他们只 有简单的设置方法和获取方法。