У меня есть несколько объектов, которые я хотел бы разделить одну таблицу «Изображения». Например, продукты могут иметь список изображений, а категории могут иметь список изображений. Я хотел бы использовать enum "EntityType", чтобы отличить, какой это тип сущности. Мое решение ниже не работает, потому что есть ошибка внешнего ключа, когда я пытаюсь вставить изображение с EntityId, который может существовать в категории, но не в продукте. Это имеет смысл, поскольку приведенное ниже решение не учитывает «EntityType». Есть ли рекомендации, как мне это сделать? Я знаю, что могу использовать «ProductId», «CategoryId» и т. Д. Вместо «EntityId», но у меня будет много сущностей, поэтому я бы предпочел не делать этого таким образом.
public class Product
{
public int Id { get; set; }
public List<Image> ProductImages { get; set; }
}
public class Category
{
public int Id { get; set; }
public List<Image> CategoryImages { get; set; }
}
public class Image
{
public int EntityId { get; set; }
public EntityType EntityType { get; set; }
public string ImageUrl { get; set; }
public Product Product { get; set; }
public Category Category { get; set; }
}
modelBuilder.Entity<Product>().ToTable("Product");
modelBuilder.Entity<Category>().ToTable("Category");
modelBuilder.Entity<Image>().ToTable("Image");
modelBuilder.Entity<Image>().HasOne(p => p.Product).WithMany(p => p.ProductImages).HasForeignKey(p => p.EntityId);
modelBuilder.Entity<Image>().HasOne(p => p.Category).WithMany(p => p.CategoryImages).HasForeignKey(p => p.EntityId);