EF:多个表的外键

时间:2019-07-29 20:48:17

标签: entity-framework-core

我有一张保存翻译数据的表。每行都有EntityIDEntityType,以便知道此转换是针对哪个实体的。

翻译表

  • id
  • entityId
  • entityTypeId
  • 说明

如果entityTypeId = 1就是一部Film.id = entityId的电影

如果entityTypeId = 2是具有Car.id = entityId等的汽车。

我正在使用EntityFramework Core(代码优先),我希望得到这个结果。在我的实体中,我包括以下内容:

  

公共虚拟IList转换{组; }

因此,EF为我的每个实体创建了列,这很正常,但不是我想要的。

EF创建的翻译表

  • id
  • entityId
  • entityTypeId
  • 说明
  • filmId //我不要这个
  • carId //我不要这个

有什么办法可以做到这一点?

代码 电影桌

    [Table("Film")]
    public class Film
    {
        [Key]
        [Required]
        public Guid ID { get; set; }

        [Required]
        public int Points { get; set; }

        public IList<Translation> Translations { get; set; }
    }

汽车桌子

    [Table("Car")]
    public class Car
    {
        [Key]
        [Required]
        public Guid ID { get; set; }

        [Required]
        public int Doors { get; set; }

        public IList<Translation> Translations { get; set; }
    }

翻译表

    [Table("Translation")]
    public class Translation
    {
        [Key]
        [Required]
        public Guid ID { get; set; }

        [Required]
        public Guid EntityId { get; set; }

        [Required]
        public Guid EntityTypeId { get; set; }

        [StringLength(100)]
        [Required]
        public string Title { get; set; }

        [StringLength(100)]
        public string Name { get; set; }

        [StringLength(500)]
        public string Description { get; set; }

        [Required]
        public Guid LanguageId { get; set; }



        public Language Language { get; set; }

        public EntityType EntityType { get; set; }
    }

此外,我可能会为汽车或电影提供多个翻译

0 个答案:

没有答案