在我的存储库中有一个保存功能而不是插入和更新

One Save function rather than Insert and Update in my repository

在我的存储库中使用既更新又插入的保存功能而不是使用单独的更新和插入功能有什么缺点吗?

下面是我在 CustomerRepository 中的保存功能:

// save
public void Save(Model.Customer customer)
{
    if (customer.Id == 0)
    {
        context.Customers.Add(Mapper.Map<Data.Customer>(customer));
    } 
    else
    {
        context.Entry(Mapper.Map<Data.Customer>(customer)).State = EntityState.Modified;
    }
    context.SaveChanges();
}

如果这是你想要的写法,这没有错。由于代码非常简单,因此您无需编写两个方法。也许当您想为 Save 或 Update 做更多事情时,最好将其拆分为单独的方法,但这是您的决定。

唯一的缺点可能是你在进一步限制自己。同样为了测试它使它不太清楚。如果你真的想挑剔的话,你可能会争辩说单一责任可以适用于此。

我个人的偏好是使用单独的方法进行单元测试,这样我知道我的代码是防弹的。如果我引入了一些破坏保存而不是更新的东西,那么我哪里出错了就很清楚了。分别编写每一个都没有太多额外的工作,并且可以在以后避免头痛。