У меня есть сущность, которая, как я знаю, уже существует в базе данных, но которая в настоящее время не отслеживается контекстом. Я заставляю контекст отслеживать объект, используя метод 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)
{
...
}
}
}
Есть ли у Вас идея?
Какая версия EF? –
Версия EF 6.0 – mykhailovskyi
Вы можете попробовать '_context.Configuration.ValidateOnSaveEnabled = false;'. (до 'Attach') –