context.Entry (оригинальный) .CurrentValues.SetValues ​​(модель);не устанавливать значения - PullRequest
0 голосов
/ 15 мая 2019

Я работаю с .Net Core и EF Core, и у меня возникла проблема, когда context.Entry(original).CurrentValues.SetValues(model); не устанавливает значения.

Некоторые элементы в оригинале являются нулевыми, где они не являются нулевыми в модели, и я ожидал, что они будут обновлены.

У меня также есть строковые значения, которые тоже не устанавливаются.

Также нет ошибки.

При просмотре кода ничто не говорит о том, что что-то идет не так.

Если бы я должен был сделать

Original.Competencies = model.competencies, а затем context.SaveChangesAsync(), это работает.

это кодовый блок во всей его полноте.

using (var context = GetDbContext())
{
    var model = reportLesson.Adapt<RepositoryReportLesson>();

    var original = context.ReportLessons.Find(reportLesson.Id);
    context.Entry(original).CurrentValues.SetValues(model);
    context.Entry(original).State = EntityState.Modified;   

    await context.SaveChangesAsync();

    _logger.LogInformation($"->> Updated report lesson id: {id}");
    return context.Entry(model).Entity.Adapt<ReportLessonLogicModel>();
}

Итак, вопрос в том, что является причиной того, что это не устанавливает значения, и как мне обойти это?

...