4

ドキュメントのメタデータをテーブルに保存するために使用しているオブジェクトがあります。ドキュメントの本文は非常に大きくなることがあり、2GBを超えることもあるため、SQL 2008のnvarchar(max)フィールドに格納します。後でSQL2008を使用してそのフィールドにインデックスを付けます。ファイルストリームはデータベースに非常に制限されており、特定の種類の同時実行ロックスキームを妨げるため、ファイルストリームは使用しません。

このオブジェクトは、LinqToSQLを介して開発者に公開されます。私の懸念は、フィールドが大きくなり、テキストが1.5 GBを超える場合、OutOfMemory例外で.Netが爆破されるのを見たことがあることです。

だから私は疑問に思っています、私はこのブロブをLinqでストリームとして扱うことができますか?または、BLOBを使用する場合は、Linqを完全にバイパスする必要がありますか?

4

2 に答える 2

2

「 LINQクエリで BLOBを取得できますか [...]」という回答を考えると、運が悪いのではないかと思います。System.Data.Linq.Binary型には、ストリーミングのメカニズムがありません。基本的に、これは単なる不変のバイト配列表現です。

呼び出すことができるいくつかの深い LINQ mojo があるかもしれませんが、それは本当にかなり深いものである必要があると思います。

Entity Framework がそれを処理する可能性があります - 私はそれを調査していません。

于 2008-11-14T08:43:35.320 に答える
1

私は最終的に、SQL の varchar(max) オブジェクトに使用できる write メソッドを使用して、linqtoSql に関する独自のメソッドを作成しました。これにより、開発者は大きなデータ型の DB への挿入をチャンクできます。

于 2008-12-08T03:03:36.650 に答える