1

CodeFirst を使用してデータベースを生成しようとしていますが、テーブルが生成されません。クラス モデルの関係: (-> は継承元を意味します) EntityBase -> Company -> Customer

FluentAPI 構成:

modelBuilder.Entity<Customer>()
            .HasKey(k => k.CustomerReference)
            .HasRequired(r => r.Company)
            .WithMany(m => m.Customers)
            .HasForeignKey(f => f.FKCompanyReference);

modelBuilder.Entity<Company>()
            .HasKey(c => c.CompanyReference);

私のコンテキストには Company と Customer しかありません。CodeFirst は Company テーブルを生成しますが、Customer テーブルは生成しません。「フラット」ドメインクラスモデルで試したので、モデルの継承が原因でしょうか。正常に動作します。どうぞ、どんな提案でも大歓迎です。

4

1 に答える 1

1

はい、継承のためです。デフォルトでは、 TPH (階層ごとのテーブル) 継承が使用されます。したがって、階層内のクラスのすべてのプロパティを含む単一のCompanyテーブルがあります。ToTableマッピングを追加して、 TPT (タイプごとのテーブル) 継承を実装します。

modelBuilder.Entity<Customer>()
            .ToTable("Customer");
于 2013-02-26T10:56:32.087 に答える