Open Closed

UnitofWorkManager does not manage the entity that is outside its scope #4721


User avatar
0
ademaygun created
  • ABP Framework version: v5.3.3
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes / no
  • Exception message and stack trace:
  • Steps to reproduce the issue:"
  • Create new solution (Abp Suite)
  • Create a new entity called Book
  • Add a new property called Name

when the await uow.CompleteAsync(); runs I observe that there is a change in the database

public virtual async Task UpdateNameAsync(Guid id)
{
	using var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
	var book = await _bookRepository.GetAsync(id);
	book.Name = DateTime.Now.ToString();
	await uow.SaveChangesAsync();
	await uow.CompleteAsync();
	throw new Exception("an occured exception")
}

but when the await uow.CompleteAsync(); runs in the code below, there is no change in the database. Surrounding unit of work manages book entity (instead of new uow)

public virtual async Task UpdateNameAsync(Guid id)
{
	var book = await _bookRepository.GetAsync(id);
	using var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
	book.Name = DateTime.Now.ToString();
	await uow.SaveChangesAsync();
	await uow.CompleteAsync();
	throw new Exception("an occured exception")
}

My original code similar like below. I want database changes to commit even though Exception is thrown.

public virtual async Task UpdateNameAsync(Guid id)
{
	var book = await _bookRepository.GetAsync(id);
	await UpdateNameFunctionAsync(book);
}

private async Task UpdateNameFunctionAsync(Book book)
{
	var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
	book.Name = DateTime.Now.ToString();
	await uow.SaveChangesAsync();
	await uow.CompleteAsync();
	throw new Exception("an occured exception");
}

Would you consider this a bug?


1 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Different units of work use different dbcontxt, so you have to put code in one unit of work.

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.2.0-preview. Updated on March 20, 2025, 18:00