如何实现一个实体集来保存所有其他实体的图像信息
本文关键字:实体 保存 其他 信息 图像 何实现 实现 一个 | 更新日期: 2023-09-27 18:11:18
我有这样的东西:
public class Product{
[some properties]
public ICollection<ProductImage> ProductImages {set;get;}
}
public class ProductImages {
string fileName,
string size, ...
public Product Product{set;get}
}
public class Poeple{
[some properties]
public virtual ICollection<PersonImage> PersonImages {set;get;}
}
public class PersonImages{
string fileName, string size, ... public Person Person{set;get}
}
…
我想从所有的ProductImages,PersonImages和…,并进入一个实体(表),如下所示:
public Images {
int size{set;get;} ,
string FileName{set; get;}, ... othes prop
}
但是什么是最好的方法来引用每条记录的图像表的父
枚举类型作为图像实体的属性是一个好的解决方案吗?
Enum BelongTo
{
ProductTable,
GalleryTabl,
PersonTable,
}
public Images {
BelongTo belong {get;set;}
int size {set; get;}
string FileName {set; get;}
}
与enum我不能有导航属性之间的父和子什么是方便的解决方案,并注意DDD
如果我没理解错的话,我会说你(至少)有两个选择
- TPH energy
- 一个图片表+多个链接表
TPH将导致许多空列。
public class BaseImage {
public int size {set; get;}
public string FileName {set; get;}
}
public class PersonImage : BaseIMage {
[Required]
public virtual Person Person {get; set;}
}
public class ProductImage : BaseIMage {
[Required]
public virtual Product Product {get; set;}
}
public class GalleryImage : BaseIMage {
[Required]
public virtual Gallery Gallery {get; set;}
}
几乎等于
public class Image {
public int size {set; get;}
public string FileName {set; get;}
[Optional]
public virtual Person Person {get; set;}
[Optional]
public virtual Product Product {get; set;}
[Optional]
public virtual Gallery Gallery {get; set;}
}
===== =====
或者你可以使用一个Image类和manymany关系
public class Image {
public int size {set; get;}
public string FileName {set; get;}
public virtual ICollection<Person> Persons {get; set;}
public virtual ICollection<Product> Products {get; set;}
public virtual ICollection<Gallery> Galleries {get; set;}
}
public class Person {
....
public virtual ICollection<Image> Images {get; set;}
}
对我来说,这似乎是处理一个图像绑定到几个person和几个product的最干净的场景…