AA.Dapper升级了
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升级了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#刷剑指Offer | 二叉树中和为某
- 下一篇: 如何使用 dotTrace 来诊断 ne