Dapper相關了解

公司新項目用的是Dapper,作的時候沒有具體看dapper的具體用法,如今回來回顧總結一下。sql

1-整體介紹dapper數據庫

咱們都知道ORM全稱叫作Object Relationship Mapper,也就是能夠用object來map咱們的db。app

Dapper是一個輕量級的ORM。以前最經常使用的ORM是EF,其實EF底層是Ado.net實現的。網站

如今基本上已經遠離SqlHelper時代了。spa

Dapper支持多數據庫。支持多數據庫的本質是由於dapper是對IDBConnection接口進行了方法擴展。.net

SqlConnection,MysqlConnection,OracleConnection都是繼承於DBConnection,而DBConnection實現了IDBConnection的接口3d

 

2-安裝dapper對象

經過nuget包進行安裝。或者登錄www.nuget.org  搜索dppaerblog

 

 

 

3.操做繼承

 引入 system.configuration  配置一下數據庫連接字符串
 ps:推薦一個網站  https://www.connectionstrings.com 數據庫配置網站

查詢

Query

Query方法是一種擴展方法,能夠從IDbConnection類型的任何對象種調用。它能夠執行查詢並映射結果

 

示例 - 查詢匿名

能夠使用Query方法執行原始SQL查詢,並將結果映射到動態列表。

string sql = "select * from table1";
using( var db = new SqlConnection("Data  Source=TestDapper.sdf"))
{
   var info = db.query(sql);
}

 示例 - 強類型查詢

 

string sql = "select * from table1";
using( var db = new SqlConnection("Data  Source=TestDapper.sdf"))
{
   var info = db.query<Table1>(sql);
}
 

示例 - 一對一映射

將2張表的關係一對一的映射到強類型中

var  sql = "select * from table1 a INNER JOIN table2 b  on a.id=b.id";

var info = db.Query<Table1 , Table2 , Table1>(

          sql,

         (table1 , table2) =>

         {

              table1.column = table2;

              return table1;

         },
         splitOn:"column";

)

splitOn是分割字段

Query的擴展方法
1 QueryFirst
2 QueryFirstOrDefault
3 QuerySingle
4 QuerySingleOrDefault

 

QueryFirst | QueryFirstOrDefault | QuerySingle | QuerySingleOrDefault 對比

QueryFirst

匿名對象及強類型對象 
string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirst(sql , new { id  = 1})

string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirst<Table1>(sql , new { id  = 1})

QueryFirstOrDefault

執行查詢並返回結果,若結果爲空,則返回默認值,若返回多個結果,則默認結果,如果單個結果,則映射給匿名對象或強類型對象

string sql  = "  select * from table1  where  Id = @id";
var info = db.QueryFirstOrDefault<Table1>(sql , new { id  = 1})

QuerySingle

執行查詢並返回結果,若結果爲空或者返回多個結果,將拋出異常

string sql  = "  select * from table1  where  Id = @id";
var info = db.QuerySingle<Table1>(sql , new { id  = 1})

QuerySingleOrDefault

執行查詢並返回結果,若結果爲空或者返回多個結果,將拋出異常,反之映射給匿名對象或強類型對象

string sql  = "  select * from table1  where  Id = @id";
var info = db.QuerySingleOrDefault<Table1>(sql , new { id  = 1})

QueryMultiple

它能夠在同一命令中執行多個查詢並返回多個結果

string sql  = "  select * from table1  where  Id = @id ; select * from table2  where  Id = @id ; ";
var info =
db.QueryMultiple(sql  , new { id = 1})

var TableInfo1 = info.Read<Table1>();
var TableInfo2 = info.Read<Table2>();


Dapper容許您使用列表在IN子句上指定多個參數。

相關文章
相關標籤/搜索