我有这样的事情:
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和...中获取摘要,并获得One Entity(表格),如下所示:
public Images {
int size{set;get;} ,
string FileName{set; get;}, ... othes prop
}
但是,将图像表的每个记录引用到它的父母
的最佳方法是什么Enum Type作为图像实体的属性是一个很好的解决方案Enum类型,如:
Enum BelongTo
{
ProductTable,
GalleryTabl,
PersonTable,
}
public Images {
BelongTo belong {get;set;}
int size {set; get;}
string FileName {set; get;}
}
使用枚举我不能在父级和子级之间拥有导航属性 什么是关注DDD的方便解决方案
答案 0 :(得分:0)
如果我很清楚我会说你有(至少)2个选择
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类和ManyToMany关系
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;}
}
在我看来,处理一个图像绑定到几个人和几个产品的最干净的场景......