2017-07-07 83 views
-3

我想在我的數據庫中插入10000+行快速(我嘗試了linqtosql,花了我2​​分多鐘),並在互聯網上的研究後,我發現了有關SQL批量複製,但我並不真正瞭解它。有人能給我一個很好的例子嗎? 我填寫從.csv文件列表,所以我所有的數據都在此在asp.net中的sql批量插入c#

List<myTable> datalist = new List<myTable>(); 

我也有爲了執行SQL事務的上下文。

+0

檢查教程,使用新數據庫創建新項目並執行批量複製。理解了本教程後,開始在您的案例中實施它。 – mybirthname

+0

真正有用的建議lol –

回答

1

要使用SqlBulkCopy您需要DataTableIDataReader。如果你有一個List<T>,仍然可以正常工作 - 通過工具,如FastMember這使得從對象序列的IDataReader,例如:

using(var bcp = new SqlBulkCopy(connection)) 
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description")) 
{ 
    bcp.DestinationTableName = "SomeTable"; 
    bcp.WriteToServer(reader); 
} 

(明顯的地方使用datalistdata;字符串之後是成員映射到列 - 你可以在最新版本的C#代替"Id"這裏使用nameof,即nameof(myTable.Id)

如果您想直接從CSV沒有List<T>中間工作,CsvReader會更合適。

+0

「名稱'ObjectReader'在當前上下文中不存在' –

+0

@ L.Achilles是的,這是一個使用FastMember的例子 - 使用它你需要從nuget安裝FastMember –

+0

哦,不幸的是我無法下載新的nuget軟件包,因爲我無法通過該PC訪問任何互聯網。 –