私はすでにEntity Framework One-To-One Mapping Issues を読みましたが、ここではビジネス ルールの仕様が異なるため重複していません。
Invoices と Orders の 2 つのテーブルがあります。
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Primary, Auto Number)
-> InvoiceID (FK InvoiceID of Invoices Table)
問題は、プロパティの名前が同じでない場合、EF はこの関連付けに 1 対多の関係を必要とすることです。プロパティの名前が同じであれば、派生クラスの目的を果たしますが、ここでは Order は派生クラスでも請求書でもありません。
InvoiceID はショッピング カートごとに生成されますが、OrderID は支払い済みの請求書に対してのみ生成されるため、すべての注文に InvoiceID がありますが、すべての注文に対応する請求書はありません。
このために別のテーブルを作成すると、それを行うにはあまりにも多くのコードを書かなければなりません。この制限を削除して、EF に引き続きモデルを処理させる方法はありますか?
ただし、現在、次のようにモデルを変更すると、機能します
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Auto Number)
-> InvoiceID (Primary, FK InvoiceID of Invoices Table)
しかし、これは良い習慣ですか?定義上、Orders テーブルの InvoiceID は確かに一意ですが、比較のためにどこでも OrderID を参照し、他の多くの参照を行うためです。プロパティをインデックス化できることはわかっていますが、このデザインが完璧だとは思いません。