ASP .Net Core 使用 Dapper 轻型ORM框架
ASP .Net Core 使用 Dapper 轻型ORM框架
【快速入门ORM框架之Dapper】大牛勿进系列
Dapper的好处:
1:轻量:早期的Dapper只有一个类文件 2:稳定、高效:接近Ado.net的读写速度 3:支持多种数据库:SQL Server, Oracle, MySQL,Sqlite 4: 跨平台:支持net Core
看了好多,先做个笔记吧
这个就好像是和之前用的写数据库的SqlConnectioin链接字符串,然后增删改成的那一套,增加的是去执行的时候加入对象,便于去Dapper去映射
Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。
也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。给出官方地址。
http://code.google.com/p/dapper-dot-net/
Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll。主要特性为:
- 使用Dapper可以自动进行对象映射!
- 轻量级,单文件。
- 支持多数据库。
- Dapper原理通过Emit反射IDataReader(数据读取器)的序列队列,来快速的得到和产生对象。
- 由于Dapper ORM的操作实际上是对IDbConnection类的扩展,所有的方法都是该类的扩展方法。所以在使用前先实例化一个IDBConnection对象
- Dapper支持net2.0,3.0,3.5,4.0。
- Dapper语法十分简单。并且无须迁就数据库的设计。
首先是通过NuGet 安装下Dapper这个组建,然后再声名下IDbconnection 这个接口,这样一来这两者就关联起来了。
IDbConnection conn = new SqlConnection(connString);
Book book = new Book(); book.Name="C#本质论"; string query = "INSERT INTO Book(Name)VALUES(@name)"; //第一种对对对象操作 对对象进行操作 conn.Execute(query, book);//是不是因为他是有自动进行对象映射的功能,然后就要加个对象类型 //第二种是都name 进行操作直接赋值操作 conn.Execute(query, new {name = "C#本质论"});
Update
1 2 | string query = "UPDATE Book SET Name=@name WHERE id =@id" ; conn. Execute (query, book);//这个就是对对象进行操作//也可以对字段进行操作conn.Excute(query,new { name = 'zxxx' ,id= '45' }) |
delete
string query = "DELETE FROM Book WHERE id = @id"; conn.Execute(query, book);// 这个是传过来的一个book的对象,book对象就包含id,这样就去映射到这个对象的id 从而进行删除
conn.Execute(query, new { id = id });
query
string query = "SELECT * FROM Book"; //无参数查询,返回列表,带参数查询和之前的参数赋值法相同。 conn.Query<Book>(query).ToList(); //返回单条信息 string query = "SELECT * FROM Book WHERE id = @id"; book = conn.Query<Book>(query, new { id = id }).SingleOrDefault();
事物
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using (conn) { //开始事务 IDbTransaction transaction = conn.BeginTransaction(); try { string query = "DELETE FROM Book WHERE id = @id" ; string query2 = "DELETE FROM BookReview WHERE BookId = @BookId" ; conn. Execute (query2, new { BookId = id }, transaction , null , null ); conn. Execute (query, new { id = id }, transaction , null , null ); //提交事务 transaction . Commit (); } catch (Exception ex) { //出现异常,事务 Rollback transaction . Rollback (); throw new Exception(ex.Message); } } |
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
2017-12-05 select标签下option标签里value属性有什么用以及和text的区别