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

歡迎光臨散文網(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ó)家法律
会宁县| 辽宁省| 来安县| 额尔古纳市| 常德市| 涞源县| 盘锦市| 湖南省| 达尔| 越西县| 永济市| 佛冈县| 新和县| 弥渡县| 榕江县| 稻城县| 民权县| 同江市| 商都县| 北川| 石城县| 甘南县| 乌什县| 乐陵市| 永泰县| 冷水江市| 金沙县| 织金县| 辛集市| 乌兰浩特市| 天峻县| 青州市| 永宁县| 喀喇沁旗| 桂平市| 孟连| 永定县| 临洮县| 古田县| 鄂托克前旗| 山西省|