カテゴリー
Microsoft

【MVC5】【Entity Framework】レコードの一部を更新するには、取得して更新する

ポイント

  • スキャフォールディングによる自動生成のコードではすべてのカラムを更新してしまう。
  • ウェブページからレコードの一部分を受け取って更新したい場合、自動生成コードを使うと受け取っていないカラムの値が無くなってしまう。
  • よって、Find でレコードを取得し、値を変更した後、SaveChanges で更新する。

スキャフォールディングによる自動生成の更新コード

db.Entry(cls).State EntityState.Modified;
dv.SaveChanges();

レコードの一部分のみを更新するコード

Class target = db.Classes.Find(cls.GroupId, cls.ClassId);
if (target == null)
{
    throw new ArgumentException();
}
target.ClassName = cls.ClassName;
target.UpdateUserId = cls.UpdateUserId;
target.UpdateTime = DateTime.Now;
db.SaveChanges();

おわりに

標準でありそうなものですけれども、、、、調べてもわかりませんでしたの><。

以上です。

コメントを残す