AA.Dapper升级了
AA.Dapper基于dapper进一步封装而成的orm框架,提供增删改查、分页、事务、原生sql的功能,以满足日常的业务开发。
1.Repository层:
DapperRepository类包含大部分数据库操作如图:

DapperContext.Current.DataBase类支持原生sql,Execute(执行非查询命令对象的sql并返回受影响的行数)、ExecuteScalar(返回select结果集中的第一行第一列)、Query(执行查询sql,并返回结果)

定义仓储类并且继承DapperRepository,如以下代码
public class UserRoleRepository:DapperRepository<UserRole>, IUserRoleRepository { }
如果有需要原生sql的需求,在IUserRepository接口中添加定义
int GetUserCount();
在UserRepository中实现
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)动态Expression
删除、查询条件需要根据传入的参数判断使用DynamicWhereExpression动态构造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升级了的更多相关文章
- .Net Core AA.FrameWork应用框架介绍
开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...
- 非关系型数据库来了,CRL快速开发框架升级到版本4
轮子?,我很任性,我要造不一样的轮子,同时支持关系型和非关系型的框架有没有 新版数据查询作了些调整,抽象了LabmdaQueryy和DBExtend,升级到版本4,非关系数据库MongoDB被支持了! ...
- CRL快速开发框架升级到3.1
CRL是一款面向对象的轻量级ORM框架,本着快速开发,使用简便的原则,设计为 无需关心数据库结构,CRL自动维护创建,即写即用(CRL内部有表结构检查机制,保证表结构一致性) 无需第三方工具生成代理类 ...
- Dapper入门学习
今天了解并学习了下Dapper的用法,这里简单介绍下 1.安装Nuget Dapper Package包 2.代码 using (IDbConnection connection = new SqlC ...
- Dapper完美兼容Oracle,执行存储过程,并返回结果集。
Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...
- Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)
接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下 ...
- AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式
AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...
- [android] SQLite 数据库的升级 和 降级
public class SqliteHelp extends SQLiteOpenHelper { /* * context:创建数据库所需的 上下文对象 * name: 数据库名字 * facto ...
- nginx 平滑升级tengine
wget http://tengine.taobao.org/download/tengine-1.5.1.tar.gz //下载Tengine1.5.1版本 tar zxvf tengine-1. ...
随机推荐
- Unity 深度冲突的解决方法
Dillon|2014-02-12 10:00|5899次浏览|Unity(280)0 3d游戏中当2个片元距离近裁减平面 w 落在同一个区间的时候,他们的深度是相等的. 最终你所看到的结果,就是下 ...
- Stack (30)(模拟栈,输出中间数用set)
Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...
- sql server 2008 merge matched判定条件
SQL Server 2008 开始支持 MERGE语句 -- 源表 CREATE TABLE test_from (id INT, val VARCHAR(20)); -- 目标表 CRE ...
- JSON<前后端的沟通>
1.什么是JSON ==>1什么是json json:是一种轻量级数据交互格式 数据交互:每一种语言的编码都不一样,他们之间互不认识.但是现在的情况是不同的语言开发出的系统也需要进行数据交互,这 ...
- 干Java这一行,应该怎样提升自己?
前段时间,字节跳动在阿里巴巴的大本营杭州悄悄的建立一个研发中心,最近在疯狂招人. 相信最近一段时间,杭州的很多的互联网公司的开发人员都接到过猎头的电话.据了解,字节跳动杭州研发中心主要负责字节跳动新增 ...
- Tomcat配置SSL
Tomcat配置SSL 查询网上资料配置如下: <Connector port="8443" protocol="HTTP/1.1" maxThreads ...
- html基础:js
js是一种脚本语言.在html中起到操控行为的作用.在html中,html代码如果是一个人的话,那么js就是这个人的行为 js在html的head中被引用,也可以在body中被引用.引用方式用< ...
- linux基础一(目录结构)
一.linux目录结构 1.根目录/下 bin:用户二进制文件,常用命令都在此目录下 sbin;这个目录下的linux命令通常由系统管理员使用 etc:包含所有程序所需的配置文件,以及服务的启动文件 ...
- 学会使用BeanUtils,提高你的开发效率
一.关于BeanUtils 一说到BeanUtils,大家可能不清楚指的哪个BeanUtils.因为它在很多包里面都有,其中挺常用的就是 (1)org.apache.commons.beanutils ...
- Windows10 安装 CUDA + cuDNN + pyTorch
2020/5/29 在 windows10 上面安装 CUDA 和 cuDNN 0.简单了解一下 CUDA 和 cuDNN 1)什么是 CUDA CUDA(ComputeUnified Device ...