2017-07-07 13 views
-3

私はデータベースに10000+の行を挿入したい(私はlinqtosqlを試して2分以上かかりました)、インターネット上での調査の結果、SQLの一括コピーしかし、私はそれを本当に理解していません。私の場合、誰かが私に良い例を与えることができますか? 私のすべてのデータがこのasp.net内のSQLのバルク挿入C#

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

であると私はまた、SQLトランザクションを実行するためのコンテキストを持っているので、私は、.csvファイルからリストを埋めます。

+0

チュートリアルを確認し、新しいデータベースを使用して新しいプロジェクトを作成し、一括コピーを行います。チュートリアルを理解した後、あなたのケースでそれを実装し始める。 – mybirthname

+0

本当に役立つアドバイスlol –

答えて

1

SqlBulkCopyを使用するには、DataTableまたはIDataReaderが必要です。あなたはList<T>を持っている場合、それはまだ動作することができます - オブジェクトのシーケンスからIDataReaderを作るFastMemberのようなツールを使用して、例えば:

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

(明らかdataの代わりにdatalistを使用し、文字列は、その後メンバーであります列にマップするために - あなたが途中でList<T>ずにCSVから直接仕事をしたい場合は、

"Id"の代わりに、C#の最近のバージョンでは、ここすなわちnameof(myTable.Id)nameofを使用することができ、CsvReaderがより適切であろう。

+0

"名前 'ObjectReader'は現在のコンテキストに存在しません" –

+0

@ L.Achillesええ、これはFastMemberを使用する例です - これを使用するには、NugetのFastMemberをインストールする必要があります –

+0

ああ、私はそのPCとのインターネットアクセスができないので、新しいナゲットパッケージをダウンロードすることはできません。 –

関連する問題