我正在阅读存储库和 UOW 模式,似乎 UOW 需要一堆数据,对内存中的数据进行修改,然后在某个点提交更改。如果不需要,我不想实现另一层,所以我试图将一些 UOW 职责委托给我的存储库(即保存)。
我当前应用程序的存储库立即执行保存,如下所示:
public void DeleteBox(int BoxId)
{
var Box = GetBox(BoxId);
if (Box != null)
{
foreach (var subBox in Box.Boxes.ToList())
{
DeleteBox(subBox.BoxId);
}
if (Box.ParentBox != null)
{
Box.ParentBox.Boxs.Remove(Box);
_db.SaveChanges();
}
_db.Boxs.Remove(Box);
_db.SaveChanges();
}
else throw new InvalidOperationException("Cannot delete Box because it doesn't exist");
}
代码当前“有效”,但我想知道在这里执行 SaveChanges 是否不太理想。当我开始构建 WebAPI 时,是否应该考虑从控制器操作调用 saveChanges,并修改存储库中应用程序的状态?任何帮助我更好地理解应该如何进行储蓄的文章或参考资料都会很棒——我现在有点不知所措。