Ошибка при обновлении одного и того же элемента 2 разаC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка при обновлении одного и того же элемента 2 раза

Сообщение Anonymous »

У меня есть следующий код, где я получаю неполную сущность с фронта, внося изменения и обновляю его. После этого я получаю ту же сущность, теперь завершенную из базы данных, внося новые изменения и обновляю его снова ...
(бизнес -правила были удалены для лучшего понимания.) < /P>
`< /p>
public async Task CollectSignature(SeparationRequest separationRequest)
{
await base.UpdateAsync(separationRequest);

int IdSeparationRequestAux = separationRequest.Id;
separationRequest = null;

var newSeparationRequest = await GetByIdAsync(IdSeparationRequestAux);

await base.UpdateAsync(newSeparationRequest );

return newSeparationRequest;
}
< /code>
`< /p>
Это метод UpdateAsync:
` < /p>
public virtual async Task UpdateAsync(TEntity entity)
{
Repository.Update(entity);
await _unitOfWork.SaveChangesAsync();

return entity;
}
< /code>
`< /p>
Это метод getbyidasync:
` < /p>
public override async Task GetByIdAsync(object id)
{
var apps = await Repository.GetFirstOrDefaultAsync(predicate: x => x.Id == (int)id, disableTracking: true,
include: x => x.AsNoTracking().Include(x => x.SeparationRequestStatus)
.Include(x => x.Itens)
.ThenInclude(x => x.SeparationRequestItemStatus));

return apps;
}
< /code>
`< /p>
Метод GetByIdasync вызывает следующий метод: GET FirstordEfaultAsync
` < /p>
public virtual async Task GetFirstOrDefaultAsync(Expression predicate = null,
Func orderBy = null,
Func include = null,
bool disableTracking = true,
bool ignoreQueryFilters = false)
{
IQueryable query = _dbSet;

if (disableTracking)
{
query = query.AsNoTracking();
}

if (include != null)
{
query = include(query);
}

if (predicate != null)
{
query = query.Where(predicate);
}

if (ignoreQueryFilters)
{
query = query.IgnoreQueryFilters();
}

if (orderBy != null)
{
return await orderBy(query).FirstOrDefaultAsync();
}
else
{
return await query.FirstOrDefaultAsync();
}
}
< /code>
`< /p>
Первый UpdateAsync выполняется успешно, но при попадании во второй UpdateAsync запускается следующее исключение: < /p>
Strong> system.invalidoperation Экспрессия:« Идентификатор »для того, чтобы быть идентифицированным, для того же экземпляра, что идентификация. уже отслеживается. При прикреплении существующих сущностей убедитесь, что прикреплен только один экземпляр объекта с заданным значением ключа. Подумайте об использовании «dbcontextoptionsbuilder.enablessensitividatalogging», чтобы увидеть противоречивые значения ключей. '
У кого -нибудь есть идеи, что я могу сделать?>

Подробнее здесь: https://stackoverflow.com/questions/746 ... em-2-times
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»