Как материализовать ключ карты EF6 в реальную модель C#

#c# #entity-framework-6 #ef-code-first

Вопрос:

Я использую EF6. У меня есть три сущности (некоторые поля выделены для ясности)

  1. Пользователь базы данных:
     [Table("Users")]
    public class DbUser
    {
        [Key] public Guid UserId { get; set; }
        public List<DbSeries> UserSeries { get; set; }
        public List<DbPlot> Plots { get; set; }
    }
     
  2. DbSeries:
     [Table("Series")]
    public class DbSeries
    {
        [Key] public Guid SeriesId { get; set; }        
        public DbPlot ThermalPlot { get; set; }
    }
     
  3. DbPlot:
     [Table("Plots")]
    public class DbPlot
    {
        [Key] public Guid PlotId { get; set; }
    
        public Guid CurrentUserId { get; set; }
        public DbUser CurrentUser { get; set; }
        public virtual DbSeries Series { get; set; }
    }
     

Их отношения были настроены следующим образом:

 modelBuilder.Entity<DbUser>()
            .HasMany(s => s.UserSeries)
            .WithRequired(g => g.CurrentUser)
            .HasForeignKey(s => s.CurrentUserId);

        modelBuilder.Entity<DbUser>()
            .HasMany(s => s.Plots)
            .WithRequired(g => g.CurrentUser)
            .HasForeignKey(s => s.CurrentUserId);

        modelBuilder.Entity<DbPlot>()
            .HasOptional(x => x.Series)
            .WithOptionalDependent(s => s.ThermalPlot)
            .Map(x => x.MapKey("SeriesId"));
 

Как вы можете видеть, в таблице графиков в базе данных есть поле SeriesId, но оно не представлено в модели C#. Как настроить такое отношение, чтобы оно имело фактическое свойство SeriesId в модели C#. Основная идея этой конфигурации заключается в том, что DbPlot всегда принадлежит какому-либо пользователю, но также может быть указано, что он принадлежит к какой-либо серии, но это необязательно.