Я использую 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 не проверять свойства, которые не обновляются?
Спасибо заранее.