Страницы .Net Core Razor, использующие модель редактирования EF Core CRUD, исключают необнуляемые поля, не вызывая ошибки - PullRequest
0 голосов
/ 30 сентября 2018

Я использую .net core 2.1 страницы бритвы.У меня есть страницы CRUD, где я показываю только некоторые поля из моей модели.Поля, которые я не показываю, получают значения по умолчанию, предоставленные для создания модели.

У меня проблема с моими моделями редактирования.Моя настройка заключается в том, что я хочу иметь возможность редактировать только определенные поля в моей модели.Когда я не включаю в свою базу данных поля, сопоставленные с полями, не допускающими значения NULL, я получаю сообщение об ошибке, даже если эти поля уже были заполнены при создании записи.

Как мне это обработать?Нужно ли настраивать модель редактирования, чтобы указать, какие поля я хочу связать с моей формой редактирования?Указатели на документацию или образцы будут полезны.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

В качестве подсказки не рекомендуется использовать модели доменов непосредственно на страницах просмотра, лучше создать класс viewModel для страниц просмотра, а затем сопоставить их с классами домена, прежде чем добавлять их в dbcontext. Подробнее об AutoMapperинструмент и viewModels в mvc

0 голосов
/ 30 сентября 2018

Прикрепляете ли вы объект сущности как измененный?Если это так, он пометит все свойства как измененные.Используйте EntityEntry, чтобы установить для свойства IsModified для соответствующих свойств значение false, чтобы EF не пытался обновить их значения в хранилище.

// gets EntityEntry and begins tracking if not currently tracked
var entry = dbContext.Entry( yourEntity );
// set as modified
entry.State = EntityState.Modified;
// for each property you don't want updated in store:
entry.Property( e => e.PropertyName )
    .IsModified = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...