長さが-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から画像をダウンロードしてアップロードする