我有多个实体,我想共享一个“图像”表。例如,产品可以具有图像列表,类别可以具有图像列表。我想使用枚举“ EntityType”来区分它是什么类型的实体。我下面的解决方案不起作用,因为当我尝试插入带有EntityId的图像时可能会出现外键错误,而EntityId可能存在于Category而不是Product中。这是有道理的,因为下面的解决方案未考虑“ EntityType”。有什么建议可以实现这一目标吗?我知道我可以使用“ ProductId”,“ CategoryId”等代替“ EntityId”,但是我会有很多实体,所以我宁愿不要那样做。
const story = await collection.findOneAndUpdate(
{ "_id" : ObjectID( docId ) },
{ "$pull": { "stories": { "story_id": storyId } }},
{ "new": true }
)
const update = await collection.findOneAndUpdate(
{ "_id" : ObjectID( docId ) },
{ "$set": {
"stories": story.stories.map((a, i) => { if (parseInt(a.story_id) > parseInt(story_id)) return { story_id: parseInt(a.story_id) + 1 }})
}}
)
答案 0 :(得分:0)
您所描述的是多对多关系。为此,您需要一个实体来跟踪所述关系:
public class ProductImage
{
[ForeignKey(nameof(Product))]
public int ProductId { get; set; }
public Product Product { get; set; }
[ForeignKey(nameof(Image))]
public int ImageId { get; set; }
public Image Image { get; set; }
}
在您的Product
/ Category
班上:
public ICollection<ProductImage> ProductImages { get; set; }
然后,进行流畅的配置:
modelBuilder.Entity<ProductImage>().HasOne(p => p.Product).WithMany(p => p.ProductImages);
modelBuilder.Entity<ProductImage>().HasOne(p => p.Image).WithMany();
对类别进行相同操作。