長さが-1のSqlDbType.VarBinaryは、少なくとも理論的にはVARBINARY(MAX)と同等です。ただし、タイプ(列挙値ではない)、つまりSqlTypes.SqlBytes
もあるため、問題はもう少し複雑です。 使用できます。そして、SqlTypes.SqlFileStream
があります VARBINARY(MAX)
にも使用できます タイプ、FILESTREAM
がある場合 属性。
ただし、問題は、これらの列挙型または型のいずれも、VARBINARY(MAX)
の操作に関する実際の問題をカバーしていないことです。 ADO.Netの列:メモリ消費。これらすべてのタイプを「すぐに使用可能」に使用すると、メモリ内に単一の配列として割り当てられた値のコピーが作成されます。これはせいぜいパフォーマンスが低くなりますが、コンテンツが大きくなると、割り当てが失敗するため、使用できなくなります。 。 VARBINARY(MAX)
を処理する適切な方法を示す記事がいくつかあります。 コンテンツ全体のメモリ内コピーの作成を回避するストリーミングセマンティクスを使用したADO.Netの値:
- ASP.NetMVCを介してSQLServerからイメージをダウンロードおよびアップロードする
- FILESTREAM MVC:SQLServerから画像をダウンロードしてアップロードする