Ошибка с ASP.Библиотека сетевых удостоверений при использовании UpdateAsync()

#c# #asp.net #asp.net-mvc #asp.net-identity

Вопрос:

Я использую Asp.Net Модели идентификации MVC. Когда я пытаюсь обновить существующего пользователя, это выдает следующую ошибку:

Экземпляр сущности типа «Клиент» не может быть отслежен, поскольку другой экземпляр с тем же значением ключа для {‘Id’} уже отслеживается. При присоединении существующих сущностей убедитесь, что присоединен только один экземпляр сущности с заданным значением ключа. Рассмотрите возможность использования DbContextOptionsBuilder.Позволяет «Чувствительному ведению журнала» видеть конфликтующие ключевые значения.

    [HttpPost]
    public async Task<IActionResult> Create([FromBody] OrderIDTO orderIDTO)
    {
        try
        {
            var pickUp = await _unitOfWork.Addresses.Get(o => o.AddressId == orderIDTO.PickUpAddressId, new List<string> { "Customer" });
            if (pickUp != null)
           {
            var order = _mapper.Map<Order>(orderIDTO);
            var cabs = await _unitOfWork.CabShifts.GetAll(r => r.IsCurrentlyOccupied == false amp;amp; r.City == pickUp.City amp;amp; r.ShiftDate.Date == today.Date, null, 
                    new List<string> { "Cab" , "Driver" });

                if (cabs.Count != 0)
                {
                    var cab = cabs.FirstOrDefault();
                    order.CabShiftId = cab.CabId;
                    await _userManager.UpdateAsync(pickUp.Customer);
                    await _unitOfWork.Orders.Insert(order);
                    await _unitOfWork.Save();
                    return Ok();
                }
                else
                    return Conflict("No cabs available now in your area.");
        }
    }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }
 

Мои конфигурации идентификации:

 public static class ServiceExtensions
{
    public static void ConfigureIdentity(this IServiceCollection services)
    {
        var builder = services.AddIdentityCore<Customer>(q => { q.User.RequireUniqueEmail = true; });
        builder = new IdentityBuilder(builder.UserType, typeof(IdentityRole), services);
        builder.AddEntityFrameworkStores<DataAccessContext>().AddDefaultTokenProviders();
    }
}
 

В процессе запуска:

 services.ConfigureIdentity();
services.AddTransient<IUnitOfWork, UnitOfWork>();
 

Комментарии:

1. Поскольку вы используете единицу работы, вам невозможно помочь, если вы не выложите весь код целиком. Подумайте о том, чтобы избавиться от UoW. Видишь gunnarpeipman.com/ef-core-repository-unit-of-work