2017-08-14 8 views
0

以下のモデルを移行しようとしていますが、生成された移行スクリプトに継承が反映されていません。私は何が欠けていますか?私は現在、Documentation of EF Coreに基づいてSQL 2016EFコア継承プロパティが移行スクリプトに反映されない

public class Facility 
    { 
     [Key] 
     public int ID { get; set; } 
     public bool Deleted { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public byte? Image { get; set; } 

     public List<LocationFacility> LocationFacilities { get; set; } 
    } 

    public class Helipad : Facility 
    { 
     public decimal Size { get; set; } 
     public decimal MaximumWeight {get; set;} 
    } 
+0

生成された移行ファイルを共有できますか?あなたのモデルに 'Helipad'をどのように組み込んでいますか? – Smit

+0

私は今朝少し変更を加え、余分なフィールドを追加しました。移行スクリプトは空白です。私は上記以上のことは何もしていないが、私はMS Docsを読む必要はないと思った。 – K7Buoy

+0

Facilityから派生したHelipadモデルをApplicationDbContextに手動で追加すると、TPH継承を使用して期待されるスクリプトが生成されます。私はそれがAdd-Migrationの間に追加されることを期待していました。 – K7Buoy

答えて

1

をターゲットとVS2017での更新、データベースに続いて、単純なアドインの移行と移行スクリプトの生成を処理するためにPMを使用していますし、特定のタイプを持つためにDbSetプロパティまたは型を指すナビゲーションプロパティが必要であるか、OnModelCreatingに参照する必要があります。 Facilityクラスにナビゲーションプロパティがあります。おそらく、モデルに含まれていたタイプのFacilityを指し示す逆のナビゲーションは、Facilityを含むようにしました。しかし、明示的に参照しない限り、Helipadは追加されませんでした。 EFコアはを含むタイプのTPHをにモデル&の階層に設定します。しかし、それが含まれていない場合、階層内の型を見つけることを試みません。

最も簡単な方法は、DbContextのDerivedクラスに含めるタイプのDbSetプロパティを追加することです。型のDbSetプロパティを公開しない場合は、OnModelCreatingメソッドで次のように記述することができます。

これが問題を解決します。

関連する問題