日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AA.Dapper升级了

發(fā)布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AA.Dapper升级了 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

AA.Dapper如何使用

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

1.Repository層:

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

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

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

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

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

int GetUserCount();

在UserRepository中實現(xiàn)

??

public?class?UserRepository?:?DapperRepository<User>,?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)查詢

//通過主鍵獲取單個實體??

_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)事務

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)動態(tài)Expression

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

var?where?=?DynamicWhereExpression.Init<User>();??

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不是全新的輪子,只是進一步的封裝,有了Ef的便捷性。你可以hold住的orm,代碼可以任意擴展,只要你熟悉dapper。喜歡.NetCore的童鞋們,可以加微信群,加微信(備注加群):qinzhong45。

總結

以上是生活随笔為你收集整理的AA.Dapper升级了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。