AA.Dapper升級(jí)了
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
????{??
??
????????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。
