我想为我的数据库中的图像创建一个表,可以由几个不同的模型使用。我正在使用实体框架并定义了我的图像类,如下所示:
public class Images
{
public int ID { get; set; }
public String Name {get; set;}
public byte[] ImageData { get; set; }
public string Type { get; set; }
}
我想从我需要保存图像的任何其他模型链接到此。 E.g
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
当然可能有外键是正确的方法,我不应该担心它?它只是我有很多模型,他们都需要存储图像,所以我宁愿把它们放在一个表而不是多个图像表,因为它会使我想的所有图像的搜索/画廊等更容易。
我觉得这是一个完整的noob问题而且我错过了一些明显的东西,如果它是道歉。
答案 0 :(得分:1)
如果您不希望EF映射FK,而是根据图像键手动填充列表,请像这样定义您的实体。但是我觉得你用FK的东西会更好。
public class Project
{
public int ID { get; set; }
public String Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string ImageKey { get; set; }
[NotMapped]
public List<Image> Images {get; set;}
}
public class User
{
public int ID { get; set; }
public String UserName { get; set; }
public string ImageKey { get; set; }
[NotMapped]
public List<Image> Images {get; set;}
}
我想您可能会尝试定义这样的类,看看它是否符合您的要求:
public class Images
{
public int ID { get; set; }
public String Name {get; set;}
public byte[] ImageData { get; set; }
public string Type { get; set; }
public virtual User User { get; set; }
public virtual Project Project { 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 class User
{
public int ID { get; set; }
public String UserName { get; set; }
}
那应该将FK映射到Project和User中的Images,这是我认为你真正想要的。