私は次のエンティティを持っている:EFコア「無効な列名 『弁別』」の継承とエラー
public abstract class Freezer
{
public int FreezerId { get; set; }
public string Name { get; set; }
public int FreezerTypeId { get; set; }
public int Capacity { get; set; }
}
public class FoodFreezer : Freezer
{
public List<FoodItem> Foods { get; set; }
}
public class ChemicalFreezer : Freezer
{
public List<ChemicalItem> Chemicals { get; set; }
}
あなたが派生Freezer
クラスはデータベースに格納されるすべてのデータが含まれていません見ることができるように。特定のコンテンツタイプのナビゲーションプロパティのみを含んでいます。
私は、次の構成を持っている:
internal class FreezerConfiguration<T> : DbEntityConfiguration<T> where T : Freezer
{
public override void Configure(EntityTypeBuilder<T> builder)
{
builder.ToTable("Freezers");
builder.HasKey(x => x.FreezerId);
builder.Property(x => x.FreezerId).IsRequired();
builder.Property(x => x.Name).IsRequired();
builder.Property(x => x.FreezerTypeId).IsRequired();
builder.Property(x => x.Capacity).IsRequired();
}
}
internal class FoodFreezerConfiguration : FreezerConfiguration<FoodFreezer>
{
public override void Configure(EntityTypeBuilder<FoodFreezer> builder)
{
builder.HasMany(x => x.FoodItems).WithOne(x => x.Freezer);
}
}
私は私のコンテキストからFoodFreezer
のリストを取得するための呼び出しを行うとき、私は「無効な列名 『弁別』」エラーが発生します。いくつかの研究をした後、それはFoodFreezer
とChemicalFreezer
が単一のテーブルを指しているということを好まないようです。私は何を変更する必要がありますか? FreezersテーブルのFKであるFreezerId
列のみのFoodFreezersおよびChemicalFreezersデータベーステーブルが必要ですか?
あなたは階層ごとのテーブル(TPH)構造を実現したいようですが、あなたのマッピングに 'HasDiscriminator()'メソッドを使用していないようです。 https://docs.microsoft.com/en-us/ef/core/modeling/relational/inheritanceを参照してください。 – haim770