Попытка использовать метод asyn c, как я делал это с шаблоном репозитория для публикации сущности, но на этот раз я хотел интегрировать шаблон единицы работы, вот мой интерфейс:
public interface IUnitOfWork : IDisposable
{
. . .
void Save();
}
И его реализация:
public class UnitOfWork : IUnitOfWork
{
private readonly DataContext _db;
public UnitOfWork(DataContext db)
{
_db = db;
. . .
}
. . .
public void Dispose()
{
_db.Dispose();
}
public void Save()
{
_db.SaveChanges();
}
}
А вот мой метод:
[HttpPost]
public async Task<IActionResult> CreateItem(string userId, ItemForCreationDto itemForCreationDto)
{
if (userId != User.FindFirst(ClaimTypes.NameIdentifier).Value)
return Unauthorized();
itemForCreationDto.UserId = userId;
var item = _mapper.Map<Item>(itemForCreationDto);
if (item == null)
return BadRequest("Could not find item");
_uow.Item.Add(item);
if (await _uow.Save()) <--- Error here
{
var itemToReturn = _mapper.Map<ItemToReturnDto>(item);
return CreatedAtRoute("GetItem",
new { userId, id = item.Id }, itemToReturn);
}
throw new Exception("Creating the item failed on save");
}
Но я получил следующие ошибки:
Не могу дождаться для 'void'
Это потому, что я пытаюсь вызвать метод Save (), который является пустым из асинхронного c метода HttpPost, я знаю, что это не имеет смысла, но до сих пор я не мог найдите, как реализовать это для этого особого случая. Когда я попытался удалить await, я получил следующую ошибку:
Невозможно неявно преобразовать тип 'void' в 'bool'
Есть предложения о том, как это реализовать?