我将 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 字段始终未修改,UI 只是显示它,而不提供任何输入框来修改它。这就是为什么该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 不要验证未更新的属性?提前致谢。