問題:
假設您有一個包含多個欄位的資料庫表,並且您想要更新記錄中特定列的值。
表:
使用者 (Users)
列名 |
---|
UserId |
UserName |
Password |
EmailAddress |
代碼:
<code class="language-csharp">public void ChangePassword(int userId, string password) { // 更新密码的代码... }</code>
解答:
要僅更新特定 UserId
的用戶的 Password 字段,您可以使用 DbContext 的 Attach
和 Property
方法。
對於 EF Core 7.0 之前的版本:
<code class="language-csharp">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(); } }</code>
適用於 EF Core 7.0 及更高版本:
<code class="language-csharp">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(); } }</code>
注意: EF Core 7.0 及更高版本中,Attach
方法已重新命名為 SetAttached
。 以上程式碼展示了兩種版本的實作方法,請根據您的 EF Core 版本選擇合適的程式碼。
以上是如何更新實體框架中的單一欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!