画像を SQL Server に保存する正しい方法はどれですか? それらを ADO.NET Entity Framework で保存する方法はありますか? 最善かつ最新の方法でそれを行う方法についての優れたリソースが必要です。
2 に答える
SQL Serverに画像を保存する場合の正しい方法は、FILESTREAMタイプを使用することです。
それらをADO.NETEntityFrameworkで保存する方法はありますか?
重要なのは、FILESTREAMはSQL Server固有の列であるのに対し、EFはデータベースに依存しないように設計されているということです。したがって、モデルにタイプのプロパティを設定することはできますbyte[]
が、EFはストリーミングを利用しません。標準でロードしますvarbinary(max)
。
ネイティブSqlFileStream
クラスを使用して、ADO.NETのFILESTREAM列型を直接操作することもできます。blog post
これが例を示すaです。
また、ファイルをファイルシステムに保存し、ファイルパスのみをデータベースに保存することもできます。
イメージは varbinary 形式で保存できます。SQL データベース テーブルで、タイプvarbinary(MAX)
and varchar(MAX)
(任意のサイズを使用できます) の 2 つの列を作成し、[null を許可する] をオンにします。
エンティティ モデルに 2 つのプロパティを追加します。
public byte[] ImageData { get; set; } //Your image stored in binary data in the database
public string ImageMimeType { get; set; ) //just a string representation of Your image type,
//this property is optional )
にImageMimeType
お申し込みいただけますHiddenInputAttribute(DisplayValue=false)
。ImageData
フレームワークがバイト配列のエディターを視覚化しないようにするために適用する必要はありません。
データベースに画像を保存するには: (ここでわかるように、モデル オブジェクトは「製品」と呼ばれます)
if (image != null) {
product.ImageMimeType = image.ContentType;
product.ImageData = new byte[image.ContentLength];
image.InputStream.Read(product.ImageData, 0, image.ContentLength);
}
お役に立てれば。
psファイルストリームに画像を保存し、データベースに「ファイルパス」を保持します。