1. ホーム
  2. c#

[解決済み] Entity Framework における更新時の除外プロパティ

2023-05-11 16:49:08

質問

MVCでモデルを更新するときに、プロパティを変更しないようにマークする適切な方法を探しています。

例えば、この小さなモデルを見てみましょう。

class Model
{
    [Key]
    public Guid Id {get; set;}
    public Guid Token {get; set;}

    //... lots of properties here ...
}

とすると、MVCが作成する編集メソッドは次のようになります。

[HttpPost]
public ActionResult Edit(Model model)
{
    if (ModelState.IsValid)
    {
        db.Entry(model).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(model);
}

これで、もし私のViewがTokenを含んでいなければ、その編集によってTokenは無効化されます。

このようなものを探しています。

db.Entry(model).State = EntityState.Modified;
db.Entry(model).Property(x => x.Token).State = PropertyState.Unmodified;
db.SaveChanges();

私が見つけた最良の方法は、包括的で、含まれたいすべてのプロパティを手で設定することですが、私は本当に除外されるものだけを言いたいと思います。

どのように解決するのですか?

次のようにします。

 db.Entry(model).State = EntityState.Modified;
 db.Entry(model).Property(x => x.Token).IsModified = false;
 db.SaveChanges();

を実行すると、更新されますが、Tokenプロパティはありません。