データベース内に、いくつかの異なるモデルで使用できる画像のテーブルを作成したいと考えています。私はエンティティ フレームワークを使用しており、画像クラスを次のように定義しています。
public class Images
{
public int ID { get; set; }
public String Name {get; set;}
public byte[] ImageData { get; set; }
public string Type { get; set; }
}
次に、画像を保持する必要がある他のモデルからこれにリンクしたいと思います。例えば
public class Project
{
public int ID { get; set; }
public String Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public virtual ICollection<tImages> Images { get; set; }
}
そしてまた
public class User
{
public int ID { get; set; }
public String UserName { get; set; }
public virtual ICollection<tImages> Images { get; set; }
}
問題は、エンティティ フレームワークがプロジェクトとユーザーの両方の外部キーをイメージ テーブルに追加していることです。私はこれを期待していたのだと思います。
私が欲しいのは、画像テーブルにインデックスを付けるために使用できる画像キーを定義することです。この効果を得るためにクラスを定義する方法がわかりません。たとえば、エンティティ クラスを定義して以下の結果を得るにはどうすればよいですか。
プロジェクト表
//ID Name StartDate EndDate Image
//1 Project1 05/02/2013 06/04/2013 PROJ01IMG
ユーザーテーブル
//ID UserName Image
//1 Bob USER01IMG
画像テーブル
//ID Name Imagekey ImageData Type
//1 img1 PROJ01IMG 0xFFF00F1 .. etc JPEG
//2 teamphoto PROJ01IMG 0xFEB0011 ..etc JPEG
//3 outline PROJ01IMG 0xFFF0AA3 ..etc PNG
//4 bob USER01IMG 0xFFF01233 ..etc JPEG
もちろん、外部キーを持つことが正しいアプローチであり、心配する必要はないかもしれません。私はたくさんのモデルを持っていて、それらはすべて画像を保存する必要があるので、すべての画像の検索/ギャラリーなどを簡単に行えるようにするため、複数の画像テーブルではなく1つのテーブルに配置したいと思います。
これは完全な初心者の質問であり、明らかな何かが欠けていると感じているので、そうであればお詫びします。