質問:
複数の列を含むデータベース テーブルがあり、レコード内の特定の列の値を更新するとします。
テーブル:
ユーザー
列名 |
---|
UserId |
UserName |
Password |
EmailAddress |
コード:
public void ChangePassword(int userId, string password) { // 更新密码的代码... }
答え:
特定の UserId
ユーザーの Password フィールドのみを更新するには、DbContext の Attach
メソッドと Property
メソッドを使用できます。
EF Core 7.0 より前のバージョンの場合:
public void ChangePassword(int userId, string password) { var user = new User() { Id = userId, Password = password }; using (var db = new MyEfContextName()) { db.Users.Attach(user); db.Entry(user).Property(x => x.Password).IsModified = true; db.SaveChanges(); } }
EF Core 7.0 以降の場合:
public void ChangePassword(int userId, string password) { var user = new User() { Id = userId, Password = password }; using (var db = new MyEfContextName()) { db.Users.SetAttached(user); db.Entry(user).Property(x => x.Password).IsModified = true; db.SaveChanges(); } }
注: EF Core 7.0 以降では、Attach
メソッドの名前が SetAttached
に変更されました。 上記のコードは 2 つのバージョンの実装メソッドを示しています。EF Core のバージョンに応じて適切なコードを選択してください。
以上がEntity Framework の単一フィールドを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。