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

时间:2015-02-18 21:58:48

标签: c# entity-framework entity-framework-6 automapper repository-pattern

使用保存功能同时更新或插入而不是在我的回购中使用单独的更新和插入功能是否有任何缺点?

以下是我的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();
}

1 个答案:

答案 0 :(得分:1)

如果你想要写它的方式没有错。由于代码非常简单,因此可以节省您编写两种方法的麻烦。也许当你想要为Save或Update做更多的事情时,最好把它分成不同的方法,但那是你的电话。

唯一的缺点可能是你要进一步限制自己。另外,对于测试,它不太清楚。你可以争辩说,如果你想要真正挑剔,那么单一的责任可以在这里适用。

我个人的偏好是使用经过单元测试的单独方法,因此我知道我的代码是防弹的。如果我介绍一些打破了保存而不是更新的东西,那么我会明白我哪里出错了。单独编写每个单独的工作并不需要额外的工作,可以在以后的工作中避免头痛。