使用DapperExtensions实现简单仓储
2024-10-16 12:51:06
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));
}
} }
恩,就是这么简单。
最新文章
- 大白话讲解Promise(三)搞懂jquery中的Promise
- T-SQL 语句的理解
- PHP发送电子邮件
- PHPExcel上传sae遇到: -1:fail to get xml content
- 读取excel文件内容代码
- spring实现文件上传(图片解析)
- java使用spark/spark-sql处理schema数据(spark1.6)
- Android studio导出配置
- linux系统开机流程详解
- [BlueZ] 2、使用bluetoothctl搜索、连接、配对、读写、使能notify蓝牙低功耗设备
- [转] 跨域资源共享 CORS 详解
- yolov3源码darknet在vscode下调试
- chromium 使用 flash
- 小程序获取地址授权的修改 wx.openSetting需点击
- python-面向对象-11-异常
- Containerpilot 配置文件 之 Jobs
- Spring AOP源码分析(一)使用示例
- [BZOJ 4809] 相逢是问候
- VuePress从零开始搭建自己的博客
- Python3: Command not found(Mac OS)