2016-08-04 10 views
0

Loanというテーブルが必要です。この表のEntity Frameworkナビゲーション2つの異なるテーブルの外部キーを格納できるフィールドのプロパティ

列は次のようになります。 ID、タイプ、BorrowId、説明

ここのトリックは、そのTypeフィールドでは、借り手は、従業員や顧客であるかどうかを判断し、その後BorrowerIdのいずれかになりますIdをEmployeeテーブルから、またはIdをCustomerテーブルから取得します。

エンティティフレームワークに関する限り、この悪いデザインですか?私が尋ねる理由は、IDが2つのテーブルから得られるので、LoanテーブルのBorrower Navigationプロパティを作成できないように思われるからです。

誰にでも解決策がありますか?ナビゲーションプロパティを操作するためにデータモデルを変更する方法も同様です。

+1

これが*多型関連*として知られていることがわかっている場合は、これを扱う多くの記事があることがわかります。好きなのを選びな。 –

+0

これは今データベースで作業するのが最悪です。企業は、アプリケーション開発者に、通常のフォーム、RI、または重要なデータベース開発コンセプトを知らなくても、データベース環境で最善を尽くすよう強制します。結果として、悪用される可能性のある多数のベンダーアプリケーションが見られます。それはまだ2つのオプションと結婚することは定義されていない仕事です。 –

答えて

1

あなたの質問に対する簡単な答えは「はい、それは悪い設計です」です。参照整合性は厳密に適用する必要があります。参照を交替してその機能を削除すると、エラーのウィンドウが作成されます。 2つのオプションを必要とする場合は、2つの列を作成し、それぞれが参照するテーブルに外部キーを作成します。それで、あなたのアプリケーションは事実上絶対に防がれます。 :D

+0

両方の列がどちらか一方であるため、両方の列がNULL可能ですか? –

+0

私はC#の専門家ではないので、クラスにはnull可能なデータ型とNULL可能でないデータ型を区別する機能が組み込まれていないので、C#で追加のロジックを使用する必要があります。 –

+0

ええ、私が言っていることは、ビジネスロジックがどちらか一方の権利を言っているとすれば、どちらもSQLで両方ともnullになるということですか? –

関連する問題