請看高質量的代碼——更新


需求:

代碼:

 1 namespace Demo.Services
 2 {
 3     public class UserService : IUserService
 4     {
 5         public void UpdateByAdmin(User user, int[] roleIds)
 6         {
 7             using (var db = new DemoDbContext())
 8             {
 9                 var dbUser = db.Users.Get(user.Id);
10                 if (dbUser == null)
11                 {
12                     throw new Exception("The user doesn't exist.");
13                 }
14                 if (!dbUser.Username.Eq(user.Username))
15                 {
16                     if (db.Users.Exists(user.Username))
17                     {
18                         throw new Exception("The username is already taken.");
19                     }
20                 }
21                 dbUser.UpdateByAdmin(user);
22                 dbUser.UpdateRoles(roleIds, db);
23                 db.SaveChanges();
24             }
25         }
26     }
27 }

 以上代碼代表了標准的更新流程:

  • 第1步,從數據庫獲取實體類實例;
  • 第2步,判斷是否為空,拋異常;
  • 第3步,檢查其他數據,拋異常;
  • 第4步,更新字段或關聯數據;
  • 第5步,提交到數據庫。

 注意這里異常的拋出是很隨意的,這得益於一個好的架構。一個好的架構允許你的代碼在任何地方隨意的拋出異常,並且不要去建異常類,那樣做會阻礙你拋出對終端用戶有意義的錯誤信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM