2016-04-11 15 views
0

EF6とSQL Server 2012を使用しています。varchar(max)列のテキストファイルを含むテーブルがあります。平均的なファイルサイズは数MBですが、私は大きなファイルでも機能するソリューションを探しています。文字列データ型を使用してこの列を追加または更新しますが、これは各レコードが4〜5 Mbの数千のレコードを更新する効率的な方法ではないと思います。 EF(またはADO.net)に大きなデータ型を挿入または更新する効率的な方法はありますか?大きなデータをEF 6を使用してvarchar(max)に挿入または更新する方法

+0

"効率的な"あなたの期待は何ですか? 「数千」のファイルはそれぞれ「4から5 MB」で約10 GBです。あなたのネットワークI/Oはここではボトルネックになるでしょう、あなたのC#のコードではありません。 –

+0

あなたはblobを使うことができますが、効率的な方法は、DBではなくHDDにファイルを保存することです。 – rashfmnb

+0

@DStanley EFは更新するすべての行を読み込んで文字列を連結しますので、大量のメモリを使用します。 –

答えて

0

私はvarchar(max)の書き込み機能を使用するストアドプロシージャを作成しました。 EFオブジェクトを更新する代わりに、SPを呼び出してコードを10倍高速化することができました。このSPは、

と同様のクエリを実行します。
update MyTable set col1.Write(@data, @oldLength, @data_length) 
0

大きなファイルの場合、フィールドはvarbinary(max)に変更することができ、ファイルはバイナリ形式に変換してデータベースに挿入できます。 1MBを超えるファイルの場合、Filestreamsがより良いオプションを提供します。バイナリ変換のためにConvert file to binary in C#にアクセスしてみてください。

+0

これはどのように効率的ですか? –

関連する問題