DbContext および POCO エンティティで Entity Framework 5.0 を使用しています。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 に指示する方法はありますか? 前もって感謝します。