无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Entity Framework Core 7中高效地進(jìn)行批量數(shù)據(jù)插入

2022-12-01 10:19 作者:楊中科  | 我要投稿

因?yàn)橹暗陌姹局?,EF Core無(wú)法實(shí)現(xiàn)高效地批量插入、修改、刪除數(shù)據(jù),所以我開(kāi)發(fā)了Zack.EFCore.Batch這個(gè)開(kāi)源項(xiàng)目,比較受大家的歡迎,獲得了400多個(gè)star。

從.NET 7開(kāi)始,微軟在Entity Framework Core 7內(nèi)置了對(duì)高效地批量修改、刪除數(shù)據(jù)的支持,詳細(xì)請(qǐng)見(jiàn)這個(gè)文檔 https://learn.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-7.0/whatsnew?WT.mc_id=DT-MVP-5004444#executeupdate-and-executedelete-bulk-updates 因此我的這個(gè)開(kāi)源項(xiàng)目在.NET 7中將不再提供對(duì)批量修改、刪除數(shù)據(jù)的支持。但是由于Entity Framework Core中仍然沒(méi)有提供高效地批量插入數(shù)據(jù)的功能,因此我把這個(gè)開(kāi)源項(xiàng)目升級(jí)到.NET 7,從而繼續(xù)為EF Core提供高效地批量插入數(shù)據(jù)的功能。

為什么開(kāi)發(fā)這個(gè)功能?

Entity Framework Core中可以通過(guò)AddRange()方法來(lái)批量插入數(shù)據(jù),但是AddRange()添加的數(shù)據(jù)仍然是被逐條執(zhí)行Insert語(yǔ)句來(lái)插入到數(shù)據(jù)庫(kù)中的,執(zhí)行效率比較低。我們知道,我們可以通過(guò)SqlBulkCopy來(lái)快速地插入大量的數(shù)據(jù)到SQLServer數(shù)據(jù)庫(kù),因?yàn)镾qlBulkCopy是把多條數(shù)據(jù)打成一個(gè)數(shù)據(jù)包發(fā)送到SQLServer的,所以插入效率非常高。MySQL、PostgreSQL等也有類(lèi)似的支持。

當(dāng)然,直接使用SqlBulkCopy來(lái)進(jìn)行數(shù)據(jù)插入需要程序員把數(shù)據(jù)填充到DataTable,而且需要進(jìn)行列的映射等操作,還需要處理ValueConverter等問(wèn)題,用起來(lái)比較麻煩。因此我對(duì)這些功能封裝,從而讓EF Core的開(kāi)發(fā)者能夠更方便的以面向模型的方式來(lái)插入數(shù)據(jù)。

這個(gè)庫(kù)目前支持MS SQLServer、MySQL、PostgreSQL數(shù)據(jù)庫(kù)。

項(xiàng)目用法

這個(gè)庫(kù)的舊版也支持.NET 5、6等版本,具體用法見(jiàn)https://github.com/yangzhongke/Zack.EFCore.Batch ,下面只講.NET 7中的用法。

首先,安裝Nuget包:

SQLServer用戶: Install-Package Zack.EFCore.Batch.MSSQL_NET7

MySQL用戶: Install-Package Zack.EFCore.Batch.MySQL.Pomelo_NET7

Postgresql用戶: Install-Package Zack.EFCore.Batch.Npgsql_NET7

然后就可以使用這個(gè)開(kāi)源項(xiàng)目為DbContext提供的的擴(kuò)展方法BulkInsert來(lái)進(jìn)行數(shù)據(jù)的批量插入了,代碼如下:

開(kāi)源項(xiàng)目地址: https://github.com/yangzhongke/Zack.EFCore.Batch

希望這個(gè)庫(kù)能幫到大家。

歡迎閱讀我編寫(xiě)的《ASP.NET Core技術(shù)內(nèi)幕與項(xiàng)目實(shí)戰(zhàn)》,這本書(shū)的宗旨就是“講微軟文檔中沒(méi)有的內(nèi)容,講原理、講實(shí)踐、講架構(gòu)”。


Entity Framework Core 7中高效地進(jìn)行批量數(shù)據(jù)插入的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
嘉定区| 广州市| 广德县| 崇左市| 沐川县| 芦山县| 平乐县| 长垣县| 崇义县| 玉环县| 星座| 西吉县| 施甸县| 益阳市| 罗源县| 肇州县| 米脂县| 京山县| 安图县| 玉树县| 江永县| 奈曼旗| 晋宁县| 漳州市| 邢台县| 新野县| 通州区| 巩义市| 大兴区| 新干县| 汉阴县| 海安县| 将乐县| 英吉沙县| 江口县| 三河市| 淄博市| 云南省| 晋城| 新建县| 县级市|