最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
尉犁县| 城固县| 香格里拉县| 宁强县| 三门峡市| 九江县| 大石桥市| 长岛县| 呈贡县| 淮北市| 甘洛县| 皮山县| 调兵山市| 商水县| 正安县| 嘉荫县| 铜梁县| 容城县| 顺昌县| 陇川县| 湛江市| 洱源县| 新竹市| 应用必备| 北票市| 庆阳市| 石景山区| 阿鲁科尔沁旗| 新建县| 靖远县| 巴林左旗| 星子县| 宁蒗| 延庆县| 文水县| 奉化市| 兴仁县| 潼关县| 英德市| 阿拉善右旗| 家居|