Я использую Entity Framework 5.0 с объектами DbContext и POCO. Там простой объект, содержащий 3 свойства:
public class Record
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsActive { get; set; }
}
Поле Title всегда немодифицировано, и пользовательский интерфейс просто отображает его без предоставления какого-либо окна ввода для его изменения. Поэтому для поля Title установлено значение null, когда форма отправляется на сервер.
Здесь, как я говорю EF для выполнения частичного обновления объекта (только IsActive):
public class EFRepository<TEntity>
{
...
public void PartialUpdate(TEntity entity, params Expression<Func<TEntity, object>>[] propsToUpdate)
{
dbSet.Attach(entity);
var entry = _dbContext.Entry(entity);
foreach(var prop in propsToUpdate)
contextEntry.Property(prop).IsModified = true;
}
}
и вызов:
repository.PartialUpdate(updatedRecord, r => r.IsActive);
Вызов метода SaveChanges, я получаю DbEntityValidationException, который говорит мне, Title требуется. Когда я устанавливаю dbContext.Configuration.ValidateOnSaveEnabled = false, все в порядке.
Есть ли способ избежать отключения проверки во всем контексте и сообщить EF не проверять свойства, которые не обновляются?
Спасибо заранее.