Добавление новых элементов в DBSet через LINQC#

Место общения программистов C#
Anonymous
Добавление новых элементов в DBSet через LINQ

Сообщение Anonymous »

У меня есть обработчик, который обновляет элементы анкеты, переданные в параметре запроса:

Код: Выделить всё

var questionnaire = await context.Questionnaires
.Include(q => q.Elements)
.SingleOrDefaultAsync(e => e.Guid == request.RecruitmentQuestionnaire, cancellationToken);
Обновление\мягкое удаление элементов работает хорошо, но при попытке создать новый элемент возникла проблема:

Код: Выделить всё

foreach(var elementDto in request.Elements)
{
questionnaire.Elements.Add(new Element()
{
Guid = elementDto.Guid,
Name = elementDto.Name,
});
}
await context.SaveChangesAsync(cancellationToken);
И вызов этого обработчика вызвал следующую ошибку:

Код: Выделить всё

The database operation was expected to affect 1 row(s), but actually affected 0 row(s); data may have been modified or deleted since entities were loaded.
Код был исправлен путем добавления новых элементов в список elementsToAdd и вызова context.Elements.AddRangeAsync(elementsToAdd, ct) .
Почему добавление новых элементов через родительский объект не сработало? Что мне не хватает?

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