Data Transfer Objects Best Practices & Conventions

  • Do define DTOs in the application contracts package.
  • Do inherit from the pre-built base DTO classes where possible and necessary (like EntityDto<TKey>, CreationAuditedEntityDto<TKey>, AuditedEntityDto<TKey>, FullAuditedEntityDto<TKey> and so on).
    • Do inherit from the extensible DTO classes for the aggregate roots (like ExtensibleAuditedEntityDto<TKey>), because aggregate roots are extensible objects and extra properties are mapped to DTOs in this way.
  • Do define DTO members with public getter and setter.
  • Do use data annotations for validation on the properties of DTOs those are inputs of the service.
  • Do not add any logic into DTOs except implementing IValidatableObject when necessary.
  • Do mark all DTOs as [Serializable] since they are already serializable and developers may want to binary serialize them.

See Also

Was this page helpful?
Please make a selection.
Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.