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"));
これはこれを行うための最良の方法ですか?