使用DapperExtensions实现简单仓储
Dapper是一个轻量级的ORM框架,它只是一个IDbConnection的扩展文件。所以我们需要手写很多SQL,但是写CRUD的代码总是很无趣的。所有就有了DapperExtensions。DapperExtensions对Dapper提供了更多的扩展,可以不用写SQL就实现CRUD操作跟简单的查询功能。话不多说还是直接上代码吧。
class ConnectionFactory
{
public static IDbConnection CreateConnection<T>() where T:IDbConnection,new ()
{
IDbConnection connection = new T();
connection.ConnectionString = ConnectionConfig.ConnectionString;
connection.Open();
return connection;
} public static IDbConnection CreateSqlConnection()
{
return CreateConnection<SqlConnection>();
}
}
interface IRepository<T>
{
IEnumerable<T> GetList(); T Get(object id); bool Update(T t); T Insert(T apply); bool Delete(T t); IEnumerable<T> Find(Expression<Func<T, object>> expression, Operator op, object param);
}
class SqlRepository<T> : IRepository<T> where T : class, IEntity
{
public virtual IEnumerable<T> GetList()
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
return conn.GetList<T>();
} } public virtual T Get(object id)
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
return conn.Get<T>(id);
}
} public virtual bool Update(T t)
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
return conn.Update(t);
}
} public virtual T Insert(T apply)
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
conn.Insert(apply);
return apply;
}
} public virtual bool Delete(T t)
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
return conn.Delete(t);
}
} public virtual IEnumerable<T> Find(Expression<Func<T,object>> expression,Operator op,object param)
{
using (var conn = ConnectionFactory.CreateSqlConnection())
{
return conn.GetList<T>(Predicates.Field<T>(expression, op, param));
}
} }
恩,就是这么简单。
使用DapperExtensions实现简单仓储的更多相关文章
- asp.net core 实现一个简单的仓储
一直有自己写个框架的想法,但是一直没有行动起来,最近比较闲,正好可以开工了. 现在已经完成了两部分.1.一个简单仓储,实现使用的是ef 2.IOC部分,这里是把内置的ioc替换成了aotofac,这部 ...
- DDD理论学习系列(12)-- 仓储
DDD理论学习系列--案例及目录 1. 引言 DDD中Repository这个单词,主要有两种翻译:资源库和仓储,本文取仓储之译. 说到仓储,我们肯定就想到了仓库,仓库一般用来存放货物,而仓库一般由仓 ...
- PCB生产企业自动化立体仓库/智能仓库库系统WMS/WCS解决方案
PCB生产企业自动化立体仓库/智能仓库库系统WMS/WCS解决方案 自动化立体仓库智能仓储系统WMS/WCS重要性调查 调查1(物流成本占总生产成本比例数据)1979年英国的第一次调查表明,在从原材料 ...
- Asp.net Core 系列之--3.领域、仓储、服务简单实现
ChuanGoing 2019-11-11 距离上篇近两个月时间,一方面时因为其他事情耽搁,另一方面也是之前准备不足,关于领域驱动有几个地方没有想通透,也就没有继续码字.目前网络包括园子里大多领域驱 ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】
前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...
- Repository 仓储,你的归宿究竟在哪?(三)-SELECT 某某某。。。
写在前面 首先,本篇博文主要包含两个主题: 领域服务中使用仓储 SELECT 某某某(有点晕?请看下面.) 上一篇:Repository 仓储,你的归宿究竟在哪?(二)-这样的应用层代码,你能接受吗? ...
- ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Proj ...
随机推荐
- R语言:常用函数【转】
数据结构 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量list:列表 data.frame:数据框 c:连接为向量或列表len ...
- 深入浅出NodeJS——数据通信,NET模块运行机制
互联网的运作,最根本的驱动就是信息的交互,NodeJS 在数据交互这一块做的很带感,异步编程让人很惬意,关于 NodeJS 的数据通信,最基础的两个模块是 NET 和 HTTP,前者是基于 TCP 的 ...
- ASP.NET MVC 防止 CSRF 的方法
MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross ...
- 不要对外公开泛型List成员
最近在阅读Framework Design Guidelines,本着现学现用的原则,于是就用FxCop工具对代码进行规范性检查时,发现了很多问题,其中包括命名以及一些设计上的规范. 其中,Do no ...
- SQL Agent服务无法启动如何破
问题现象 从阿里云上镜像过来的一台的数据库服务器,SQL Agent服务启动不了,提示服务启动后停止.(原数据库服务器是正常的,怀疑跟镜像有关) 如下是系统日志和SQL Agent的日志 SQLSer ...
- java中 用telnet 判断服务器远程端口是否开启
package net.jweb.common.util; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...
- 每天一个linux命令(47):iostat命令
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...
- ## Android 6.0 权限申请 ##
Android 6.0 权限申请 1. 以前的权限申请(sdk<23) 直接在AndroidManifest.xml中申明即可: <uses-permission android:name ...
- Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...
- android studio sdk 不能更新
网上看到好多sdk不能更新的,解决办法基本上一下,试了下大都没用,,有人说改hosts ,我试了 貌似没用 下面是我亲测可以更新的一种方法:使用镜像地址更新 步骤: 1. 打开 SDK Manager ...