1

MVC モデル内で継承を利用しようとしています。プロジェクトには、ユーザーが機器の損傷を登録できる場所が 2 つあります。移動時や棚卸し時。私が持っている: トランスポート トランスポートの詳細

在庫確認在庫確認詳細

Details モデルはどちらも、ある種のオブジェクトのコレクションです。1 つの明細項目に対して 1 つの損害記録を作成できます。損傷の詳細を記録できる抽象的な損傷モデルを作成しました。

そのため、Damage TransportDetailDamage と StockDetailDamage から継承する 2 つのモデルがあります。

私の TransportDetail レコードは、0 または 1 つの TransportDetailDamage レコードを持つことができます。StockCheckDetail レコードは、0 または 1 つの StockDetailDamage レコードを持つこともできます。

私の現在のモデルは次のとおりです(簡潔にするために輸送とほとんどの小道具を削除しました):

public class TransportDetail {
    public int TransportDetailID { get; set; }

    public int TransportID { get; set; }
    public Transport Transport { get; set; }

    public TransportDamage TransportDamage { get; set; }
}
public abstract class Damage {
    public int DamageID { get; set; }
    public string Description { get; set; }
}
public class TransportDamage : Damage {
    public TransportDetail TransportDetail { get; set; }
}

プリンシパルの終わりから無効なキーが定義されているまで、エラーが発生し続けます。また、Fluent API を使用してフィールド名を定義できるようにしたいので、TransportDamage_DamageID などで終わることはありません。

編集:モデルが適切に機能するように見える Fluent API を追加しましたが、完全には正しくないようです。データベース内の恐ろしい自動フィールド名:)

modelBuilder.Entity<TransportDetail>()
  .HasOptional(x=>x.TransportDamage)
  .WithOptionalPrincipal(x=>x.TransportDetail)
  .Map(t=>t.MapKey("TransportDetailID"));

これはこれを行うための最良の方法ですか?

4

1 に答える 1