2017-06-23 7 views
1

SQLiteを持つUWPアプリケーションでEFCoreを使用し始めました。私はデータベースに保存したいクラスを宣言しました。EFCore/UWPにAdd-Migrationのテーブルがありません

Add-Migration 2017-06-23 

、それは、データベースを構築するためのコードを作成します。私はそれから行く、パッケージマネージャコンソールで

public class DatabaseContext : DbContext 
{ 
    public DbSet<Person> People { get; set; } 
    public DbSet<Relationship> Relationships { get; set; } 
    public DbSet<SourceDescription> SourceDescriptions { get; set; } 
    public DbSet<Agent> Agents { get; set; } 
    public DbSet<Event> Events { get; set; } 
    public DbSet<Document> Documents { get; set; } 
    public DbSet<PlaceDescription> PlaceDescriptions { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlite("Filename=Testing.db"); 
    } 
} 

:私は、その後、様々なDbSetsとOnConfiguringオーバーライドを宣言しました。しかし、そのコードにはいくつかのトップレベルのテーブルがありません。それらのうちのいくつかはそこにありますが、いくつかはそうではなく、私はこれを引き起こしていることを見る/把握できません。エラーは生成されず、欠落している表が欠けている理由を判別するためのパターンを見つけることができません。

詳しい情報:

  • 私のコードで定義された29個のクラスがあります。マイグレーション・コードは24個の表を作成します。

  • 5つの「欠落」クラスのうち、4つはSubjectから派生しており、これは結論から導かれます。 5番目は結論クラスです。マイグレーションコードはそれぞれの派生クラスのプロパティを「マージ」するため、クラスとして直接使用することはないため、結論クラスに独自のテーブルがないことに驚くことはありません。

  • 結論クラスを除いて、他の4つのクラスは(他のクラスのプロパティで使用されるのではなく)DbSetプロパティでのみ参照されます。上記のように、Documentクラスは別のクラスから派生しているため、共通の要素であるクラスは派生しません。

  • 一部のクラスは部分クラスではありません。

  • 一般的な要因であるクラス内のプロパティについては、何も発見できません。たとえば、PersonクラスにはListが2,3回ありますが、Agentクラスにも同様の意味があり、となります。

私は何を探すことができますか、これは既知の問題ですか?

+0

いくつかのクラスは他を継承していますか? –

+0

@IvanStoevはい、それは答えではありません、私は恐れています。派生したクラスの一部が移行コードに表示されることを示すために、いくつかの情報を追加しました。 –

+1

いくつかの基本クラスが 'DbSet'を介して公開されている場合、またはいくつかのエンティティのナビゲーションプロパティから参照されている場合や、(単純な実装継承とは対照的に)' modelBuilder.Entity'呼び出しの汎用引数として使用されている場合、EFはそれがエンティティであるとみなし、TPH戦略(つまり、弁別子付きの単一の表を作成する)を使用します。たとえば、欠落している4つのクラスが 'Subject'テーブルに統合されている可能性があります。Discriminatorカラムを使用してテーブルの移行を確認します。 –

答えて

1

Ivanが提供する答えは、EFコアがSubjectクラスから派生した4つのクラスを見て、それらの派生クラスのすべてのプロパティを含むSubjectクラスのテーブルを作成することです。次に、これがどの派生クラスであるかを示すSubjectクラスにDiscriminatorカラムが追加されます。

http://www.learnentityframeworkcore.com/inheritance/table-per-hierarchyは説明のための良い記事です。

私が前に出会ったことのないデータベーステーブルを設計する面白いアプローチです。私は生きて学ぶ:)

関連する問題