ストリーミングとLinq Blob
-
08-07-2019 - |
質問
ドキュメントのメタデータをテーブルに保存するために使用しているオブジェクトがあります。ドキュメントの本文は非常に大きくなる場合があり、場合によっては> 2 GBなので、SQL 2008のnvarchar(max)フィールドに格納します。後でSQL 2008を使用して、そのフィールドにインデックスを付けます。ファイルストリームはデータベースに非常に制限されており、特定の種類の同時ロックスキームを妨げるため、ファイルストリームは使用しません。
このオブジェクトは、LinqToSQLを介して開発者に公開されます。私の懸念は、フィールドが大きくなり、テキストが>の場合、OutOfMemory例外で.Net爆弾が見られることです。 1.5 GB。
だから、このblobをLinqのストリームとして扱うことはできますか?または、ブロブを使用する場合、Linqを完全にバイパスする必要がありますか?
解決
"の回答をご覧くださいquery retrieve BLOBs [...]" 運が悪かった疑わしい。 System.Data.Linq.Binary typeにはストリーミングのメカニズムがありません-基本的には不変のバイト配列表現です。
呼び出すことができる深いLINQモジョがあるかもしれませんが、実際にはかなり深くする必要があると思います。
Entity Frameworkがそれを処理する可能性があります-私はそれを調査していません。
他のヒント
私は、SQLのvarchar(max)オブジェクトで利用可能な書き込みメソッドを利用して、linq to Sqlを中心に独自のメソッドを記述しました。これにより、開発者は大規模なデータ型のDBに挿入をチャンクできます。