FreeSql 插入資料返回自增值

2021-10-03 15:36:30 字數 2658 閱讀 6445

freesql是乙個功能強大的 .net orm 功能庫,支援 .netframework 4.0+、.netcore 2.1+、xamarin 等支援 netstandard 所有執行平台。

以 mit 開源協議託管於 github:

freesql 插入資料的方式有多種,這篇文章教你用最優的方案做資料插入功能。

static

ifreesql fsql =

newfreesql.freesqlbuilder()

.useconnectionstring

(freesql.datatype.sqlite,

"data source=db1.db").

useautosyncstructure

(true

)//自動同步實體結構到資料庫

.build()

;//請務必定義成 singleton 單例模式

public

class

blog

public

string url

public

int rating

}var blog =

newblog

;

如果表有自增列,插入資料後應該要返回 id。

方法1:(原始)

long id = fsql.

insert

(blog)

.executeidentity()

;blog.id = id;

方法2:(依賴 freesql.repository)

var repo = fsql.

getrepository

<

blog

>()

;repo.

insert

(blog)

;

將插入後的自增值,填充給 blog.id

方法3:(依賴 freesql.dbcontext)

using

(var ctx = fsql.

createdbcontext()

)

將插入後的自增值,填充給 blog.id

var items =

newlist

<

topic

>()

;for

(var a =

0; a <

10; a++))

;}

方法1:(原始)

fsql.

insert

(items)

.executeaffrows()

;

無法返回 items 所有 id 值

方法2:(依賴 freesql.repository)

var repo = fsql.

getrepository

<

blog

>()

;repo.

insert

(items)

;

將插入後的自增值,填充給所有 items.id

當操作的是 sqlserver/postgresql 資料庫,此方法為一次執行,返回所有 id

當操作的是其他資料庫,此方法為迴圈多次執行,返回所有 id(注意效能問題)

針對 sqlserver/postgresql/mysql 資料庫,目前能在以下實現使用:

fsql.

insert

(items)

.executesqlbulkcopy()

;fsql.

insert

(items)

.executepgcopy()

;fsql.

insert

(items)

.executemysqlbulkcopy()

;

另外 iinsert 方法提供了 todatatable() 方法返回 datatable 物件,讓使用者自己封裝 bulkcopy 操作。

datatable dt = fsql.

insert

(items)

.insertidentity()

//開啟自增 id 插入

.todatatable()

;

注意:insertidentity() 的功能是生成 sql 的時候有值,而不是呼叫 set identity on;

《新人學習指引》 | 《select》 | 《update》 | 《insert》 | 《delete》

《表示式函式》 | 《codefirst》 | 《dbfirst》 | 《baseentity》

《repository》 | 《unitofwork》 | 《過濾器》 | 《樂觀鎖》 | 《dbcontext》

《讀寫分離》 | 《分區分表》 | 《租戶》 | 《aop》 | 《黑科技》 | 更新日誌

Mysql Mybatis插入資料返回自增主鍵

新增主機裝置管理資訊 param hostpojo 主機裝置管理資訊 return 結果 override transactional public intaddhost hostpojo hostpojo 查詢主機裝置管理列表 param hostpojo 主機裝置管理 return 主機裝置管理...

插入資料返回自增id值

1 先查詢自增id的值,然後在插入資料,可能存在插入重複的情況 2 使用returning子句 必須在儲存過程中使用 delete操作 returning返回的是delete之前的結果 insert操作 returning返回的是insert之後的結果 update操作 的returning語句是返...

Mybatis 插入資料返回自增主鍵

使用mybatis作為工具連線mysql,要求在插入資料之後返回自增主鍵 一開始也很迷惑,mybatis使用insert之後,成功返回的是1,失敗會報錯或返回0,主鍵去哪找來 後來知道mybatis可以把自增主鍵的值放到實體中返回 這是實體類的定義 實體類必須有乙個字段接收主鍵的值 public c...