Обновление с Entity Framework 4 до 5 привело к ошибке

После обновления до EF 5 я продолжаю получать Validation failed for one or more entities. See 'EntityValidationErrors' property for more details' в конкретном экземпляре своего кода.

Оказывается, у меня есть поле, которое является NVARCHAR nullable в базе данных, и оно помечено как [Required] с аннотацией данных в частичном классе. Поле, о котором идет речь, программно устанавливается равным нулю. Это отлично работало в EF4, так как оно было проверено на модели базы данных (NVARCHAR с нулевым значением).

Мне нужно, чтобы это поле было помечено как [Обязательное], потому что оно также принимает пользовательские данные в других случаях.

Каковы мои варианты? Могу ли я игнорировать эту ошибку атрибута/проверки прямо перед SaveChanges()?


person James    schedule 09.09.2012    source источник


Ответы (1)


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

Вместо этого удалите требуемый атрибут из своей модели данных и создайте модель представления, в которой есть требуемый атрибут, а затем используйте что-то вроде AutoMapper для сопоставления между ними.

person Erik Funkenbusch    schedule 09.09.2012
comment
Я уже использую модель представления. У меня просто есть два представления: одно требует этого поля, а другое - нет. Если я удалю [Required] из модели представления. Как я могу обеспечить это для одного из моих представлений? (добавить новое правило проверки в контроллер? не аннотацию данных) - person James; 09.09.2012
comment
@James: Если вы используете модель представления, у вас есть отдельная модель представления для каждого представления, требующего разных проверок. Если нет, вы не используете модель представления - по крайней мере, вы используете ее неправильно. Аннотации данных для проверки представления сущностей — это полное заблуждение. - person Ladislav Mrnka; 09.09.2012
comment
может я не правильно его использую. У вас есть ссылка на учебник? - person James; 09.09.2012
comment
@James - Что ж, если вы используете отдельную модель представления, вам следует удалить атрибут Required из вашей модели данных. Ваша модель данных должна соответствовать тому, как спроектирована ваша база данных. Вы используете атрибут Required только в своей модели представления. - person Erik Funkenbusch; 10.09.2012