轻量级ORM框架 【Dapper】 的使用
ORM是什么?
從字面理解,O是Object,對象;R是Relation,關系;M是Mapping,映射。所以,用一句話概括就是:ORM是一種對象關系映射的技術。
?
Dapper 是.NET下的一種ORM框架。
Dapper的安裝
使用NuGet安裝
打開visual studio的項目,依次點擊工具,NuGet包管理器,管理解決方案的NuGet程序包;再點擊瀏覽,搜索dapper,點擊搜索結果中的Dapper,勾選項目,選擇安裝;
在解決方案管理器中點擊項目,查看引用,如果有Dapper,說明安裝成功。
?
Dapper的基本用法
首先,我們在Model層寫一個Person類,他有ID,Name,Remark。
同樣我們在數據庫也有一個Person表,包含id,name,remark三個字段,其中id是主鍵自增。
而后我們在DAL層寫一個PersonDB類,提供對Person的基本訪問。connectionString是數據庫連接字符串,由配置文件讀取。
插入操作
將一個對象person插入數據庫。插入代碼文本如下。@Name的意思是自動將person里的Name值綁定上去。
public static int Insert(Person person) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("insert into Person(Name,Remark) values(@Name,@Remark)", person); } }批量插入:
/// <summary> /// 批量插入Person數據,返回影響行數 /// </summary> /// <param name="persons"></param> /// <returns>影響行數</returns> public static int Insert(List<Person> persons) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("insert into Person(Name,Remark) values(@Name,@Remark)", persons);} }刪除操作:
public static int Delete(Person person) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("delete from Person where id=@ID", person);} }public static int Delete(List<Person> persons) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("delete from Person where id=@ID", persons);} }修改操作:
public static int Update(Person person) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("update Person set name=@name where id=@ID", person);} }public static int Update(List<Person> persons) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Execute("update Person set name=@name where id=@ID", persons);} }查詢操作:
/// <summary> /// 無參查詢所有數據 /// </summary> /// <returns></returns> public static List<Person> Query() {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Query<Person>("select * from Person").ToList();} }/// <summary> /// 查詢指定數據 /// </summary> /// <param name="person"></param> /// <returns></returns> public static Person Query(Person person) {using (IDbConnection connection = new SqlConnection(connectionString)){return connection.Query<Person>("select * from Person where id=@ID", person).SingleOrDefault();} }?
Dapper的復雜操作
查詢的In操作:
/// <summary> /// In操作 /// </summary> public static List<Person> QueryIn() {using (IDbConnection connection = new SqlConnection(connectionString)){var sql = "select * from Person where id in @ids";//參數類型是Array的時候,dappper會自動將其轉化return connection.Query<Person>(sql, new { ids = new int[2] { 1, 2 }, }).ToList();} }public static List<Person> QueryIn(int[] ids) {using (IDbConnection connection = new SqlConnection(connectionString)){var sql = "select * from Person where id in @ids";//參數類型是Array的時候,dappper會自動將其轉化return connection.Query<Person>(sql, new { ids }).ToList();} }多語句操作
為此我們引入以下Book類,同樣在數據庫里設置這個表。
public class Book {public int ID { get; set; }public int PersonID { get; set; }public string BookName { get; set; } } /// <summary> /// 多語句操作 /// </summary> public static void QueryMultiple() {using (IDbConnection connection = new SqlConnection(connectionString)){var sql = "select * from Person; select * from Book";var multiReader = connection.QueryMultiple(sql);var personList = multiReader.Read<Person>();var bookList = multiReader.Read<Book>();multiReader.Dispose();} }Join操作
我們是面向對象編程,所以一個對象里面會有許多其他子對象,這個子對象里面又有其自己的子對象,這種關系在數據庫里的表示就是外鍵。
比如我們有一本書book,它有主人person,book是一個對象,主人又是一個對象。
現在我們想根據書的ID查詢書的信息,包括主人信息。 public static BookWithPerson QueryJoin(Book book) {using (IDbConnection connection = new SqlConnection(connectionString)){var sql = @"select b.id,b.bookName,p.id,p.name,p.remarkfrom Person as pjoin Book as bon p.id = b.personIdwhere b.id = @id;";var result = connection.Query<BookWithPerson, Person, BookWithPerson>(sql,(bookWithPerson, person) =>{bookWithPerson.Pers = person;return bookWithPerson;},book);//splitOn: "bookName");return (BookWithPerson)result;} } 其中,Query的三個泛型參數分別是委托回調類型1,委托回調類型2,返回類型。形參的三個參數分別是sql語句,map委托,對象參數。所以整句的意思是先根據sql語句查詢;同時把查詢的person信息賦值給bookWithPerson.Pers,并且返回bookWithPerson;book是對象參數,提供參數綁定的值。
最終整個方法返回BookWithPerson,這樣我們所需要的所有信息就有了。
?*****************************
?*** Keep learning and growing. ***
?*****************************
轉載于:https://www.cnblogs.com/gangle/p/9287082.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的轻量级ORM框架 【Dapper】 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】asp.net Core 系列【一
- 下一篇: PyCharm安装与配置,python的