在 ServiceStack 解决方案中定义您的实体两次是最佳实践吗?

Is it best practice to define your entity twice in a ServiceStack solution?

EmailContacts 示例中,联系人的属性列在联系人 class 和 CreateContact class 中。 (没有 UpdateContact class,真实世界的应用程序也需要它)

以 2 或 3 个不同的 classes 列出所有属性是否正常?如果 Class 有 50 个属性,这似乎很难维护和不好的做法。

我首先查看 ServiceStack Backgrounds concepts for more info, specifically Why Remote Services should use DTOs,其中指出 DTO 属性声明性地声明了每种类型的意图,即它们不应被视为您想隐藏在 DRY 方法后面的重复逻辑。它还包括内置的自动映射示例,展示了如何轻松地在不同类型之间进行映射。

这些是用于不同目的的不同类型,例如操作类型 CreateContactUpdateContact 定义了每个操作的输入,而 Contact 定义了数据模型,对于这些不同类型中的每一个来说,当一个实体是首次创建与更新与数据模型中保留的内容。

如果愿意,您可以自由共享基础 class 公共属性,但是当这些不同类型的每个定义不同时,您可能会在将它们拆分为离散 class随着实施的进展。

对于更大的实际 ServiceStack 示例,您可以查看 https://techstacks.io available on GitHub at https://github.com/NetCoreApps/TechStacks

的代码库