2014-08-27 2 views
3

У меня есть сущность, которая, как я знаю, уже существует в базе данных, но которая в настоящее время не отслеживается контекстом. Я заставляю контекст отслеживать объект, используя метод Attach на DbSet. Затем установите 'IsModified' = true для необходимых свойств. Но EF пытается обновить каждое свойство в таблице db и метод SaveChanges() выдает исключение, что некоторые свойства необходимы и не могут быть пустыми. Хотя я отмечаю только одно свойство как измененное. Я использую EF v.6.0.Обновление только определенных столбцов в БД с использованием Entity Framework

Вот мой код:

public bool ChangeState(int id, bool state) 
    { 
     try 
     { 
      var obj = new T {ID = id, Hidden = state}; 

      _context.Set<T>().Attach(obj); 

      _context.Entry(obj).Property(x => x.Hidden).IsModified = true; 
      return _context.SaveChanges() == 1; 
     } 
     catch (DbEntityValidationException dbEx) 
     { 
      ... 
     }    
    } 
} 

Есть ли у Вас идея?

+0

Какая версия EF? –

+0

Версия EF 6.0 – mykhailovskyi

+2

Вы можете попробовать '_context.Configuration.ValidateOnSaveEnabled = false;'. (до 'Attach') –

ответ

1

Хорошо, чтобы получить ответ на этот вопрос, я буду повторять @Stephen Muecke ответ здесь:


Вы можете попробовать _context.Configuration.ValidateOnSaveEnabled = false; Пожалуйста, не голосуйте меня, кредит для @Stephen Muecke

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