ASP.NET MVC アプリケーションで Entity Framework を使用して、具体的なクラスごとのテーブル マッピングを実行しようとしています。これは学校の課題用であり、既存の (mysql) データベースにマップする必要があります。
public class Deelnemer
{
public Deelnemer()
{
OpgelosteDoosVragen = new List<OpgelostDoosVraag>();
}
public string Emailadres { get; set; }
public virtual IList<OpgelostDoosVraag> OpgelosteDoosVragen { get; set; }
}
}
このクラスには、「OpgelosteDoosVragen」のリストが含まれています。クラス 'OpgelosteDoosVragen' (現時点では空) は 'AbstractOpgelost' を継承しています。
public abstract class AbstractOpgelost
{
protected AbstractOpgelost()
{
OpgelostId = new Guid();
}
public Guid OpgelostId { get; set; }
public virtual AbstractVraag AbstractVraag { get; set; }
public virtual AbstractAntwoord AbstractAntwoord { get; set; }
public virtual Element Element { get; set; }
}
public class OpgelostDoosVraag : 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");
});
}
}
OnModelCreating メソッド:
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());
}
Deelnemer でリストにアクセスしようとすると、EntityCommandExecution がスローされ、次のように
MySql.Data.MySqlClient.MySqlException: Table 'kindermishandeling.abstractopgelosts' doesn't exist
表示されます。問題は、エンティティ フレームワークが抽象クラス 'AbstractOpgelost' のテーブルにマップしようとしているが、doos_opgelostevragen (具象のテーブル) にマップする必要があることです。クラス)。
私のマッピングに問題がある人はいますか? 私は何時間も探していて、必死です...