zoukankan      html  css  js  c++  java
  • 请看高质量的代码——更新

    需求:

    代码:

     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步,提交到数据库。

     注意这里异常的抛出是很随意的,这得益于一个好的架构。一个好的架构允许你的代码在任何地方随意的抛出异常,并且不要去建异常类,那样做会阻碍你抛出对终端用户有意义的错误信息。

  • 相关阅读:
    YbtOJ20030 连珠风暴
    YbtOJ20029 最大权值
    P6859 蝴蝶与花
    P4115 Qtree4
    P2486 [SDOI2011]染色
    P2487 [SDOI2011]拦截导弹
    P5163 WD与地图
    P3733 [HAOI2017]八纵八横
    CF1100F Ivan and Burgers
    P1712 [NOI2016]区间
  • 原文地址:https://www.cnblogs.com/leotsai/p/how-to-write-beautiful-code-update.html
Copyright © 2011-2022 走看看