У меня есть следующий код, где я получаю неполную сущность с фронта, внося изменения и обновляю его. После этого я получаю ту же сущность, теперь завершенную из базы данных, внося новые изменения и обновляю его снова ...
(бизнес -правила были удалены для лучшего понимания.) < /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
Ошибка при обновлении одного и того же элемента 2 раза ⇐ C#
Место общения программистов C#
-
Anonymous
1749559098
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», чтобы увидеть противоречивые значения ключей. '
У кого -нибудь есть идеи, что я могу сделать?>
Подробнее здесь: [url]https://stackoverflow.com/questions/74606441/error-when-updating-the-same-item-2-times[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия