C# 实体框架&x27;每种混凝土等级的表';映射到错误的表

C# 实体框架&x27;每种混凝土等级的表';映射到错误的表,c#,mysql,asp.net-mvc,entity-framework,C#,Mysql,Asp.net Mvc,Entity Framework,我正在尝试在ASP.NETMVC应用程序中使用实体框架进行每个具体类的表映射。这是一个学校作业,我必须映射到现有的(mysql)数据库 public class Deelnemer { public Deelnemer() { OpgelosteDoosVragen = new List<OpgelostDoosVraag>(); } public string Emailadres { get; set; } public

我正在尝试在ASP.NETMVC应用程序中使用实体框架进行每个具体类的表映射。这是一个学校作业,我必须映射到现有的(mysql)数据库

public class Deelnemer
{
    public Deelnemer()
    {
        OpgelosteDoosVragen = new List<OpgelostDoosVraag>();
    }

    public string Emailadres { get; set; }
    public virtual IList<OpgelostDoosVraag> OpgelosteDoosVragen { get; set; } 

    }
}
映射:

public class AbstractOpgelostMap : EntityTypeConfiguration<AbstractOpgelost>
{
    public AbstractOpgelostMap()
    {
        this.HasKey(t => t.OpgelostId);

        this.Property(t => t.OpgelostId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.HasRequired(t => t.Element).WithMany().Map(t => t.MapKey("elementNaam"));
        this.HasRequired(t => t.AbstractVraag).WithMany().Map(t => t.MapKey("vraagId"));
        this.HasRequired(t => t.AbstractAntwoord).WithMany().Map(t => t.MapKey("antwoordId"));
    }
}

public class OpgelostDoosVraagMap : EntityTypeConfiguration<OpgelostDoosVraag>
{
    public OpgelostDoosVraagMap()
    {
        this.Map(t =>
            {
                t.MapInheritedProperties();
                t.ToTable("doos_opgelostevragen");
            });
    }
}
当我试图访问Deelnemer中的列表时,抛出EntityCommandExecution,并显示:
MySql.Data.MySqlClient.MySqlException:表'kindermishandleing.abstractopgelosts'不存在
问题是实体框架想要映射到抽象类“AbstractOpgelost”的表,但它必须映射到doos_OpgelostVragen(具体类的表)


有人看到我的映射有问题吗。我找了好几个小时,我绝望了……

我认为
公共虚拟IList OpgelosteDoosVragen{get;set;}
中的问题。因为EF对一对多的关系有一个约定。它会自动理解这个表中的复数名词名称,所以这是一个原因,因为它抛出了这样的异常。请去修理一下

请尝试为AbstractOpgelost类指定表名


您是否可以避免对AbstractOpgelost类进行抽象?

您是否可以添加
OnModelCreating()
方法的内容?不,我不知道AbstractOpgelost必须映射到哪个表。该表取决于混凝土等级(每个混凝土等级的表)。而命名约定与此无关。AbstractOpgelost表也不存在。
public class AbstractOpgelostMap : EntityTypeConfiguration<AbstractOpgelost>
{
    public AbstractOpgelostMap()
    {
        this.HasKey(t => t.OpgelostId);

        this.Property(t => t.OpgelostId)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.HasRequired(t => t.Element).WithMany().Map(t => t.MapKey("elementNaam"));
        this.HasRequired(t => t.AbstractVraag).WithMany().Map(t => t.MapKey("vraagId"));
        this.HasRequired(t => t.AbstractAntwoord).WithMany().Map(t => t.MapKey("antwoordId"));
    }
}

public class OpgelostDoosVraagMap : EntityTypeConfiguration<OpgelostDoosVraag>
{
    public OpgelostDoosVraagMap()
    {
        this.Map(t =>
            {
                t.MapInheritedProperties();
                t.ToTable("doos_opgelostevragen");
            });
    }
}
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {   
        modelBuilder.Configurations.Add(new OpgelostDoosVraagMap());
        modelBuilder.Configurations.Add(new DeelnemerMap());
        modelBuilder.Configurations.Add(new doosMap());
        modelBuilder.Configurations.Add(new doosVraagMap());
        modelBuilder.Configurations.Add(new DoosAntwoordMap());
        modelBuilder.Configurations.Add(new ElementMap());
        modelBuilder.Configurations.Add(new AbstractAntwoordMap());
        modelBuilder.Configurations.Add(new AbstractVraagMap());
        modelBuilder.Configurations.Add(new AbstractOpgelostMap());

    }