プロフィール画像が必要な単純なエンティティがあります。これを行うための適切な方法は何ですか?つまり、これは1対1の関係であり、1つの画像は1つのエンティティにのみ関連し、その逆も同様です。この画像は、関連するエンティティを挿入するとともに、Webフォームを介してアップロードする必要があります。
誰かが私に正しい方向を示すことができれば、dbと関連エンティティに画像を永続化する方法は素晴らしいでしょう。
プロフィール画像が必要な単純なエンティティがあります。これを行うための適切な方法は何ですか?つまり、これは1対1の関係であり、1つの画像は1つのエンティティにのみ関連し、その逆も同様です。この画像は、関連するエンティティを挿入するとともに、Webフォームを介してアップロードする必要があります。
誰かが私に正しい方向を示すことができれば、dbと関連エンティティに画像を永続化する方法は素晴らしいでしょう。
ちょっとしたコメント:画像をdbに保存するのは良い考えではないと思います。
一般に、dbは大きなバイナリチャンクではなくテキストを格納するように設計されているため、dbに画像を格納することはお勧めできません。画像のパスを保存し、画像をフォルダに保存する方がはるかに優れています。エンティティのID(1323.jpg)を持つ1対1の関係名の画像を確認したい場合。
画像パスが必要な場合は、いくつかのガイドラインに従う必要があります(一般的には防御的にコードを記述します)。
しかし、私は何らかの理由であなたがそれをすべきだと思います。だからあなたが望むものを達成するために:
DB設計
C#コード
それを格納するためのユーザーバイト配列
コード例については、次のリンクを確認してください:http: //www.codeproject.com/Articles/21208/Store-or-Save-images-in-SQL-Server
コードは簡単ですが、なぜDBなのですか?これがWebサイトの場合は、簡単に参照できるディスク上の場所に保存してみませんか?
データベースは、既知のサイズと比較的小さいサイズのデータを格納するように最適化されています。画像の長さはおそらく8KBを超えます(MAXデータ型を意味します)。画像は「プロフィール」とは別の行/ページに保存されます。
個人的には、既知のフォルダーに画像を保存し、画像名にIDを使用します。画像がなく、標準のgifなどを使用しているプロファイルの場合は、プロファイルIDのsimlinks / hardlinksを共通のgifに設定することで、単純に/トリミングしてください。
public class Profile
{
public int Id {get;}
public string Name {get; private set;}
public Image Picture {get; private set;}
public void Save()
{
using (var connection = new SqlConnection("myconnectionstring"))
using (var command = new SqlCommand("", connection))
{
command.CommandText =
"UPDATE dbo.TblProfile " +
"SET " +
"Name = @name, " +
"Picture = @picture " +
"WHERE ID = @id";
command.Parameters.AddWithValue("@name", Name);
command.Parameters.AddWithValue("@picture", Picture);
command.Parameters.AddWithValue("@id", Id);
command.ExecuteNonQuery();
}
}
}
次のリンクがあなたに解決策を与えると思います、