SqlDbType.VarBinary dengan panjang -1 setara dengan VARBINARY(MAX), setidaknya secara teori. Tapi masalahnya sedikit lebih rumit, karena ada juga tipe (bukan nilai enum), yaitu SqlTypes.SqlBytes
yang dapat digunakan. Dan ada SqlTypes.SqlFileStream
yang dapat digunakan juga untuk VARBINARY(MAX)
jenis, ketika mereka memiliki FILESTREAM
atribut.
Tetapi masalahnya adalah bahwa tidak satu pun dari enum atau tipe ini yang mencakup masalah sebenarnya dengan bekerja dengan VARBINARY(MAX)
kolom di ADO.Net:konsumsi memori. Semua jenis ini, ketika digunakan 'out-of-the-box', akan membuat salinan dari nilai yang dialokasikan sebagai array tunggal dalam memori, yang paling tidak berkinerja baik, tetapi karena konten menjadi lebih besar menjadi tidak mungkin untuk digunakan karena kegagalan alokasi . Saya memiliki beberapa artikel yang menunjukkan cara yang tepat untuk menangani VARBINARY(MAX)
nilai di ADO.Net menggunakan semantik streaming yang menghindari pembuatan salinan dalam memori dari seluruh konten:
- Unduh dan Unggah gambar dari SQL Server melalui ASP.Net MVC
- FILESTREAM MVC:Unduh dan Unggah gambar dari SQL Server