2009-10-13 92 views
0

场景:更新命令-architecture问题

你需要更新客户的2场

你没有一种方法UpdateCustomer在您的项目尚未在任何地方

如果你创建一个称为UpdateCustomer(客户客户)的方法,其可以接纳完整客户对象并且仅对所有字段进行全部更新

例如(当然名字只是张贴在这里)创建UpdateCustomer2Fields(串月,串一年),只是更新那些2场

我能想象的UpdateCustomerThis 一个shitload UpdateCustomerThat

但如果我只是公开一个UpdateCustomer,我可以将它传递给一个客户对象,并让它更新任何内容并在任何地方使用它。

好,坏?要走哪条路。

回答

1

您应该只更新所有字段,除非有理由不要,以减少您的维护头痛。

不更新所有字段的原因。这些都是非常具体的环境,只有在你的情况下观察它们才有效。

  1. 绝大多数交易是更新,由于通过网络传递了不必要的数据,导致沉重的负担。
  2. 业务或合法合规性要求您准确记录用户每次更改哪些确切数据(这些确实存在)。但是,根据环境,最好在数据库服务器上记录这些信息。
  3. 某些用户不应具有某些字段的更新权限。这是架构特定的,涉及到你如何公开你的函数。如果某人必须拥有某些凭证才能更新特定信息,那么通常情况下,您不希望每笔交易都更新一切。这可以是动态的,并且可能会导致字段中的字段更新(或其他无数选择)。我通常会使用具有不同访问权限的多个消费者使用服务的分层体系结构来解决这个问题。
  4. 我错过了吗?

通常,答案只是传递整个对象。

0

创建一个名为UpdateCustomer(客户客户)的方法,该方法可以接收完整的客户对象并仅对所有字段执行全部更新。

保持简单。现在,您可以将时间花在更大的问题上。

+0

我确实保持简单。 – FiveTools 2009-10-17 00:24:07