<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          AA.Dapper升級(jí)了

          共 2751字,需瀏覽 6分鐘

           ·

          2020-10-10 21:21

          AA.Dapper如何使用

          AA.Dapper基于dapper進(jìn)一步封裝而成的orm框架,提供增刪改查、分頁、事務(wù)、原生sql的功能,以滿足日常的業(yè)務(wù)開發(fā)。

          1.Repository層:

          DapperRepository類包含大部分?jǐn)?shù)據(jù)庫操作如圖:?

          DapperContext.Current.DataBase類支持原生sql,Execute(執(zhí)行非查詢命令對(duì)象的sql并返回受影響的行數(shù))、ExecuteScalar(返回select結(jié)果集中的第一行第一列)、Query(執(zhí)行查詢sql,并返回結(jié)果)?

          定義倉儲(chǔ)類并且繼承DapperRepository,如以下代碼?

          public class UserRoleRepository:DapperRepository<UserRole>, IUserRoleRepository { }

          如果有需要原生sql的需求,在IUserRepository接口中添加定義

          int GetUserCount();

          UserRepository中實(shí)現(xiàn)

          ??

          public?class?UserRepository?:?DapperRepository,?IUserRepository??

          ????{??

          ??

          ????????public?int?GetUserCount()??

          ????????{??

          ????????????return?DapperContext.Current.DataBase.ExecuteScalar<int>

          ("select?count(*)?from?Sys_UserInfo");??

          ????????}??

          }??

          ?

          2.ApplicationServce

          (1)新增

          _userRepository.Insert(entityUser);??

          (2)修改

          var?entity?=?_userRepository.Get(input.SysNo);??

          entity.Status?=?320;??

          _userRepository.Update(entity);??

          ?

          (3)刪除

          ?var?entity?=?_userRepository.Get(input.SysNo);??

          _userRepository.Delete(entity);??

          ?

          (4)查詢

          //通過主鍵獲取單個(gè)實(shí)體??

          _userRepository.Get(input.SysNo);??

          ??

          //通過Expression條件獲取??

          _userRepository.Select(x?=>?x.SysNo?==?input.SysNo);??

          ??

          //分頁??

          var?result?=?_userRepository.From(sql?=>??

          ????????????{??

          ????????????????sql.Select()??

          ???????????????????.Where(x=>x.UserName==input.UserName)??

          ???????????????????.Page(input.PageIndex,?input.PageSize);??

          ????????????});??

          ?

          (5)事務(wù)

          using?(var?dbTransaction?=?dapperContext.BeginTransaction())??

          ?{??

          ?????try??

          ?????{??

          ?????????var?user?=?new?UserInfo()??

          ?????????{??

          ?????????????UserName?=?"chengTian",??

          ?????????????RealName?=?"成天",??

          ?????????????GmtCreate?=?DateTime.Now,??

          ?????????????GmtModified?=?DateTime.Now,??

          ?????????????LastLoginDate?=?DateTime.Now??

          ?????????};??

          ?????????userInfoRepository.Insert(user);??

          ?????????userAlbumRepository.Insert(new?UserAlbum??

          ?????????{??

          ?????????????Pic?=?"image/one.jgp"??

          ?????????});??

          ?????????dapperContext.Commit();??

          ??

          ?????}??

          ?????catch?(Exception?ex)??

          ?????{??

          ?????????dbTransaction.Rollback();??

          ?????}??

          ?}??

          ?

          (6)動(dòng)態(tài)Expression

          刪除、查詢條件需要根據(jù)傳入的參數(shù)判斷使用DynamicWhereExpression動(dòng)態(tài)構(gòu)造Expression 如一下代碼

          var?where?=?DynamicWhereExpression.Init();??

          if?(input.RealName?!=?"")??

          {??

          ???where?=?where.And(x?=>?x.RealName.Contains(input.RealName));??

          }??

          if?(input.SysNo!=Guid.Empty)???

          {??

          ????where?=?where.And(x=>x.SysNo==input.SysNo);??

          }??

          if?(input.SysNos.Any())???

          {??

          ????where?=?where.And(x=>input.SysNos.Contains(x.SysNo));??

          }??

          var?result?=?_userRepository.From(sql?=>??

          {??

          ????sql.Select()??

          ???????.Where(where)??

          ???????.Page(input.PageIndex,?input.PageSize);??

          });??

          https://github.com/ChengLab/AAFrameWork

          源碼地址

          用起來還是很順手的,目前比較成熟也很多,不過AA.Dapper不是全新的輪子,只是進(jìn)一步的封裝,有了Ef的便捷性。你可以hold住的orm,代碼可以任意擴(kuò)展,只要你熟悉dapper。喜歡.NetCore的童鞋們,可以加微信群,加微信(備注加群):qinzhong45。

          瀏覽 36
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  福利特级操比在线视频 | 色吊丝最新永久网址大全 | AV天堂吧| 无码短视频| 一级黄色日逼片 |