我需要删除用户,他的角色和该用户的UserTitle(多对多)实体。我想在一个事务中执行此操作,将数据库上下文和userManager注入到控制器中。在这种情况下我需要使用SaveChangesAsync还是transaction.Commit足以将更改推送到数据库?
var userTitles = db.UserTitles
.Where(ut => ut.UserId == user.Id);
using (var transaction = db.Database.BeginTransaction())
{
foreach (var userTitle in userTitles.ToList())
db.UserTitles.Remove(userTitle);
foreach (var item in rolesForUser.ToList())
await userManager.RemoveFromRoleAsync(user, item);
await userManager.DeleteAsync(user);
transaction.Commit();
await db.SaveChangesAsync();
}