ORM系列之三 Dapper

2021-08-10 14:02:18 字數 3434 閱讀 5441

目錄

快,讀取資料接近idatareader。

支援大部分主流的資料庫,如:ms sql,oracle,mysql,sqlite等等。

支援對映一對一,一對多,多對多關係。 

示例中需要用到兩個實體型別,分別為post.cs和user.cs。  

1

2

3

4

5

6

7

8

9

10

11

12

13

publicclasspost

publicstringtitle

publicstringcontent

publicuser user

}

publicclassuser

publicstringname

}

建立表指令碼:  

create table [dbo].[post](

[id] [

int] identity(1,1

) not null,

[title] [nvarchar](

50) null,

[content] [nvarchar](

2000

) null,

[userid] [

int] null,

constraint [pk_post] primary key clustered

( [id] asc

)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks =on) on [primary]

) on [primary]

create table [dbo].[user](

[id] [

int] identity(1,1

) not null,

[name] [nvarchar](

20) null,

primary key clustered

( [id] asc

)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks =on) on [primary]

) on [primary]

public

class

dbhelper

public

static

void

closeconnection()}}

///

///

/// class

program

//示例2:簡單查詢,返回動態列表

console.writeline("

示例2:簡單查詢,返回動態列表");

var result2 = conn.query("

select id,title,content from post");

foreach (var item in

result1)

//示例3:帶引數的查詢

console.writeline("

示例3:帶引數的查詢");

var result3 = conn.query("

select id,title,content from post where userid=@userid

", new );

foreach (var item in

result3)

//示例4:執行沒有返回結果的命名

//test04(conn);

//示例5:執行多次指令碼

"示例5:執行多次指令碼");

"insert into [user](name) values(@name)", new , new , new });

////示例6:返回多個結果

console.writeline("

示例6:返回多個結果");

string sql = @"

select * from post where id=@id

select * from [user] where id=@id";

using (var multi = conn.querymultiple(sql, new ))

//示例7:執行儲存過程

console.writeline("

示例7:執行儲存過程");

var result7 = conn.query("

sp_getpost

", new , commandtype: commandtype.storedprocedure);

foreach (var item in

result7)

//示例8:一對多對映,返回的一行資料對映到資料庫多張表

console.writeline("

示例8:一對多對映");

string sqlonetomulti = "

select * from post p inner join [user] u on p.userid=u.id";

//query

var data = conn.query(sqlonetomulti, (post, user) => );

dbhelper.closeconnection();

console.read();}}

ORM框架 Dapper案例

查詢列表 查詢的sql 替換引數 public static listquery string sql,object param 查詢第乙個資料 public static t queryfirst string sql,object param 返回乙個物件集合 public static lis...

ORM框架Dapper詳細教程

輕量級 通過實現idbconnection的擴充套件方法 所有例項方法需要自己寫 它是通過sql與表的對映功能首先建立乙個.net core專案 根據sql查詢 查詢語句需要對映的類 查詢語句 public t select string sql 查詢sql返回的行數 public int exec...

《解剖PetShop》系列之三

解剖petshop 系列之三 三 petshop資料訪問層之訊息處理 在進行系統設計時,除了對安全 事務等問題給與足夠的重視外,效能也是乙個不可避免的問題所在,尤其是乙個b s結構的軟體系統,必須充分地考慮訪問量 資料流量 伺服器負荷的問題。解決效能的瓶頸,除了對硬體系統進行公升級外,軟體設計的合理...