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...