日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
EF實體框架:如何批量添加數(shù)據(jù)庫數(shù)據(jù)(ef怎么批量添加數(shù)據(jù)庫)

隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,數(shù)據(jù)庫已經(jīng)成為了大規(guī)模數(shù)據(jù)集中管理的重要工具,而EF實體框架作為現(xiàn)代應(yīng)用程序中重要的數(shù)據(jù)訪問技術(shù),已經(jīng)得到不少開發(fā)者的青睞。但是,在開發(fā)實際應(yīng)用過程中,我們有時會遇到要批量添加數(shù)據(jù)的場景,那么如何利用EF實體框架實現(xiàn)這一需求呢?本文將針對這一點做一個詳細介紹。

為永勝等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及永勝網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、做網(wǎng)站、永勝網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

一、EF實體框架簡介

EF實體框架是Microsoft提供的一種ORM(Object-Relational Mapping)技術(shù),其主要作用是將對象和關(guān)系數(shù)據(jù)庫之間建立起映射關(guān)系,從而讓我們使用面向?qū)ο蟮姆椒▉聿僮鲾?shù)據(jù)庫。它基于ADO.NET,集成了LINQ、Lambda表達式等語言特性,可以使得我們在開發(fā)過程中無需關(guān)注數(shù)據(jù)庫底層細節(jié),只需要關(guān)注我們的領(lǐng)域模型,從而提高生產(chǎn)效率。

二、EF實體框架批量添加數(shù)據(jù)的方法

在EF實體框架中,一般情況下我們使用SaveChanges方法將單個對象數(shù)據(jù)添加到數(shù)據(jù)庫中,但是如果我們需要一次性添加多個數(shù)據(jù),比如需要導(dǎo)入Excel表格中的數(shù)據(jù)到數(shù)據(jù)庫中,那么單個添加的方法行不通,這時我們就需要使用EF實體框架的批量添加功能。下面我們將介紹兩種常見的批量添加方法。

1. 使用AddRange方法添加數(shù)據(jù)

AddRange方法是EF實體框架提供的批量添加數(shù)據(jù)的方法之一。該方法可以一次性添加多個對象到數(shù)據(jù)庫中。我們可以先將需要添加的所有對象添加到List中,然后再用AddRange方法將中的所有對象添加到數(shù)據(jù)庫中,具體實現(xiàn)方式如下:

“`csharp

using(var db=new MyDbContext())

{

//構(gòu)造一個List用于存放待添加的實體

var list = new List();

for(int i=1;i

{

list.Add(new MyEntity{Name=”Name”+i, Age=i, Address=”Address”+i});

}

//一次性添加List中的所有元素到數(shù)據(jù)庫中

db.MyEntities.AddRange(list);

db.SaveChanges();//保存更改

}

“`

以上代碼中,我們構(gòu)造了一個List,循環(huán)1000次向中添加數(shù)據(jù),最后一次性將中的所有數(shù)據(jù)添加到數(shù)據(jù)庫中。這種方式非常適用于需要添加大量數(shù)據(jù)的情況,不僅代碼簡單,而且可以大大提高添加數(shù)據(jù)的效率。

2. 使用SqlBulkCopy方法添加數(shù)據(jù)

如果我們要添加的數(shù)據(jù)來自其他數(shù)據(jù)庫,或者Excel等外部文件,那么使用AddRange方法就有些力不從心了,因為AddRange只能添加自己領(lǐng)域模型中定義的實體類型。此時,我們可以使用SqlBulkCopy方法添加數(shù)據(jù),SqlBulkCopy是.NET Framework提供的一種高效的批量數(shù)據(jù)復(fù)制方法,可以將一個數(shù)據(jù)源中的數(shù)據(jù)快速復(fù)制到另一個目標位置。在EF實體框架中,我們可以利用SqlBulkCopy方法將外部數(shù)據(jù)源的數(shù)據(jù)一次性復(fù)制到數(shù)據(jù)庫中。具體實現(xiàn)步驟如下:

“`csharp

//構(gòu)造待添加的DataTable數(shù)據(jù)表

DataTable dt = new DataTable();

dt.Columns.Add(“Name”);

dt.Columns.Add(“Age”);

dt.Columns.Add(“Address”);

for(int i=1;i

{

dt.Rows.Add(“Name”+i, i, “Address”+i);//添加一行數(shù)據(jù)

}

using(var db=new MyDbContext())

{

using(var conn=db.Database.Connection)

{

conn.Open();//打開連接

using(var cmd=conn.CreateCommand())

{

cmd.CommandText=@”TRUNCATE TABLE MyEntities”;//清空表中所有數(shù)據(jù)

cmd.ExecuteNonQuery();//執(zhí)行命令

}

//構(gòu)造SqlBulkCopy對象,指定數(shù)據(jù)表名稱和連接對象

using(var bulkCopy=new SqlBulkCopy(conn))

{

bulkCopy.BatchSize=1000;//每次寫入1000行數(shù)據(jù)

bulkCopy.DestinationTableName=”MyEntities”;//設(shè)置目標表名稱

//設(shè)置數(shù)據(jù)列映射關(guān)系

bulkCopy.ColumnMappings.Add(“Name”,”Name”);

bulkCopy.ColumnMappings.Add(“Age”,”Age”);

bulkCopy.ColumnMappings.Add(“Address”,”Address”);

bulkCopy.WriteToServer(dt);//一次性寫入DataTable中的所有數(shù)據(jù)到數(shù)據(jù)庫

}

conn.Close();//關(guān)閉連接

}

}

“`

以上代碼中,我們構(gòu)造了一個DataTable數(shù)據(jù)表,循環(huán)1000次添加數(shù)據(jù)行,最后調(diào)用SqlBulkCopy方法將整個DataTable一次性添加到數(shù)據(jù)庫中。注意,在使用SqlBulkCopy方法之前,我們需要打開數(shù)據(jù)庫連接,將目標表中已有的數(shù)據(jù)清空,然后設(shè)置列名映射關(guān)系,最后才可以調(diào)用WriteToServer方法將數(shù)據(jù)寫入數(shù)據(jù)庫。

三、EF實體框架批量添加數(shù)據(jù)的優(yōu)缺點分析

相關(guān)問題拓展閱讀:

  • EF如何在運行時創(chuàng)建新數(shù)據(jù)庫,新表,并且能為新表建立新Model

EF如何在運行時創(chuàng)建新數(shù)據(jù)庫,新表,并且能為新表建立新Model

Code First 倒是春祥可歷森攜以 運行時創(chuàng)建新數(shù)據(jù)庫,新表 (也就是 如果數(shù)據(jù)庫不存在的話, 會創(chuàng)肢伏建)

但是 能為新表建立新Model 的. 就麻煩了……

關(guān)于ef怎么批量添加數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


本文題目:EF實體框架:如何批量添加數(shù)據(jù)庫數(shù)據(jù)(ef怎么批量添加數(shù)據(jù)庫)
瀏覽路徑:http://www.dlmjj.cn/article/cosipjj.html