反对创建或更新的参数

时间:2010-05-18 21:13:41

标签: language-agnostic

最近有人说他们认为所有Creates都应该是CreateOrUpdates。本能地我认为不好,但现在我想知道我是否有任何理由。

情况

  interface IService{
    void Create(Object a);
    void Update(Object a);
  }

   interface IService{
       void CreateOrUpdate(Object a);
  }

我的第一个想法是,如果你实现了CreateOrUpdate的所有内容,那么你无法控制是否有人意外地向你发送了错误的数据,或者在你调用更新之前有人更改了“主要”字段的并发问题....

但如果你删除这些案件,还有其他缺点吗?

3 个答案:

答案 0 :(得分:3)

对我来说似乎很简单:如果你担心意外的记录创建,请使用这两种方法。如果你不关心使用一个。

如果您不知道自己是否应该关注,那么您并不担心。采用一种方法。

也许这过于简单化,但通常目标只是将数据导入数据库。

答案 1 :(得分:1)

我曾经在财务报告应用程序上工作,禁止更新,所有更改都是创建包含更新数据的新记录。这是为了提供所有帐户更改的完整修订历史记录。

答案 2 :(得分:0)

在我们使用的框架中,没有Create,只有CreateOrUpdate。我们从未遇到过只需要创建的案例。

换句话说,它就是提供的东西,所以我们一起去了,它还没有让我们失望。系统已有两年历史,约有300张桌子。

在我们的例子中,我们不会更改主键,如果主键与现有行匹配,则没有错误。