私の MVC アクション メソッドは、既定のモデル バインダーがフォーム コレクション データから作成するエンティティ オブジェクト (ページ) を受け取ります。一部のフィールドは、リクエストでサーバーに送信されなかったため、間違っているか null です。たとえば、「 」を送信していないためCreateDate
、デフォルトのモデル バインダーがこのプロパティを必要のないデフォルト値に設定しています。
オブジェクトがアタッチされると、もちろん、すべての値を永続化しようとします (無効な値や不要な値をデータベースに含めます)。もちろん、プロパティごとに手動で割り当てることもできますが、EntityState が modified に設定され、SaveChanges() が呼び出されたときに永続化されないように、何らかの方法でプロパティにフラグを付けることができるかどうか疑問に思っていました..
public ActionResult SomeMethod(Page page)
{
page.ModifyDate = DateTime.Now;
_db.NewsPages.Attach(page);
_db.ObjectStateManager.ChangeObjectState(page, System.Data.EntityState.Modified);
_db.SaveChanges();
_db.Dispose();
}