哪里是保存UnitOfWork for Web Api的最佳位置?

时间:2014-04-30 14:57:46

标签: entity-framework asp.net-web-api

真的很简单。

我有大量的OData控制器,它们调用它们的存储库来保存/更新/删除数据。在这些操作结束时,我正在调用UnitOfWork进行保存。

    public async Task<Foo> Post(Foo entity)
    {
        repository.Insert(entity);

        await UnitOfWork.Save();

        return entity;
    }

    public async Task<Foo> Put([FromODataUri] int key, Foo entity)
    {
        await repository.Update(entity, key);

        await UnitOfWork.Save();

        return entity;
    }

但是我已经开始使用批处理操作,因此如果UnitOfWork在一系列操作结束时保存,而不是在每个操作结束时保存更好。我应该在哪里储蓄?

1 个答案:

答案 0 :(得分:0)

  

我已经开始使用批处理操作,因此如果UnitOfWork在一系列操作结束时保存,而不是在每一个操作结束时保存更好。我应该在哪里储蓄?

  1. 您可以传递批处理操作的所有值。例如。 Foo列表。在列表上执行操作,然后保存。
  2. 您可以接受一个指示是否保存批处理操作的布尔值。
  3. 或者你可以公开一个Save方法,只从那里调用UnitOfWork.Save()。这需要在Autofac注册中更改UnitOfWork的生命周期,但这可能会导致非批处理操作出现不良行为。由于这个原因,我远离这个选项。
  4. 对我而言,第一种选择似乎是最好的可用性。