使用不同的模型进行保存与加载是否更好?

问题描述 投票:0回答:1

假设我正在创建一个表单,您可以在其中编辑人员记录。人员记录可能看起来像这样:

public class Person
{
    public string Id {get; set;}
    public string Name {get; set;}
    public string JobId {get; set;}
    public string JobName {get; set;}
}

假设 JobName 属性仅在表单中显示。在数据库中,作业名称是通过 JobId 计算出来的。

负载:

public Person GetPerson(string id)

当有人编辑表单并保存它时,理想情况下我只需要将前三个属性发送到 Save 函数,以避免关于是否需要提供 JobName 属性的任何歧义:

public class PersonToSave
{
    public string Id {get; set;}
    public string Name {get; set;}
    public string JobId {get; set;}
}

保存:

public void SavePerson(PersonToSave person)

像这样拆分模型以便拥有“加载”模型和“保存”模型是个好主意吗?还是这太复杂了?

我对重用相同模型的主要担忧是,如果另一个工作流程需要保存人物模型,他们将不知道哪些属性需要填写,哪些属性不需要填写,特别是如果类在问题有更多属性,包括一些复杂的属性。

design-patterns model
1个回答
0
投票

您提到的模式有一个名称。这称为 CQS(命令-查询分离)。它带来了优点和缺点。最重要的优点是写入和读取数据之间的关注点分离。通过分离这两者,您可以为它们使用不同的技术(例如 ORM)和类模型(用于复杂查询的复杂视图对象)。

如果更进一步,您可以通过引入不同的数据存储来进行读取和写入来应用 CQRS(命令-查询责任分离)。

© www.soinside.com 2019 - 2024. All rights reserved.