2012-09-07 3 views
1

При обновлении строки из отдельного объекта, я пытаюсь избежать обновлений полей, которые не изменились, с помощью этого:Избегайте обновление нон обнуляемого поля

DbEntityEntry<Type> entry = context.Entry(entity); 
entry.Property(p => p.Property).IsModified = false; 

Это прекрасно работает для обнуляемого полей, но когда это поле с недействительным значением EF выдает исключение проверки, указывающее, что это поле требуется.

У кого-нибудь есть представление о том, почему это не работает, и если я должен поиграть с оригинальными значениями, чтобы преодолеть это?
Я использую EF 5.0 и DBContext-API.

+0

Я добавил EF5 и .NET 4.5 тегов, так как установку 'IsModified' лжи не представляется возможным в .NET 4.0 –

ответ

2

Причина - логика проверки внутри EF. Валидация всегда срабатывает для всего объекта - это не соответствует изменениям. Решение состоит в том, чтобы отключить логику проверки сущностей в EF:

context.Configuration.ValidateOnSaveEnabled = false; 
+1

Хорошо, по крайней мере, жизнеспособной работой вокруг, но это кажется мне немного опасным. Что еще я проиграю, отключив это, помимо проверки непустых полей? – Robert

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^