2010-12-13 9 views
1

これは私の最初の投稿です。私に協力してくれている皆さん、ありがとうございます。Entity Frameworkの複合継承

私は新しいMERに取り組んでいます。これはそれの一部です:http://i.stack.imgur.com/jt5Mz.png。リンクMERで

alt text

、私は実体上の階層あたり表を使用しています:人、企業と個人を。ドライバエンティティは、タイプに基づいています。

私の大きな問題は、ドライバー個々または会社することができることです。

両方個々または会社共通フィールド両方のエンティティからを保持しているから inherites。

エンティティドライバーにタイプあたり表を使用して、個々のまたは会社ことが柔軟ドライバエンティティを作成する方法はありますか?

ありがとうございました!

答えて

0

Personから継承されるのではなく、 'Driver'が 'associated'(0..1)であると言うようにデザインを変更してみませんか?基本的に「ドライバー」を人の任意のエンティティにすると、個人または会社の両方がこれを継承します。

+0

私が考えたのは、**オブジェクト指向モデル**です。あなたはクラスとして**ドライバー**が正しいと思いますか? – gblmarquez

+0

@gblmarquezすべての企業は運転していますか?すべての個人の運転手ですか?両方の答えが「はい」の場合、会社と個人を人ではなく「ドライバー」から派生させるのはなぜですか? – MerickOWA

1

ドライバの代わりにドライバがあるように、ドライバを変更する必要があると思います。つまり、別のDriverクラスがあり、Personという名前のフィールドがあり、 'Person'は個人または企業のいずれかです。

またはDriverNumberフィールドをPersonクラスに移動して、Person(IndividualまたはCompany)がドライバ番号を持つ場合に「Driver」にすることができます。

+0

** Driver **のような別のエンティティが存在するため、** ** ** ** ** Person ** ** Field ** DriverNumber **を追加できません。多分**顧客**は私の頭の中で最初です。私がデザインしたとき、私は**オブジェクト指向のモデル**で考えました。あなたはクラスとして**ドライバー**が正しいと思いますか? – gblmarquez

+0

ドライバーはPersonから継承するべきではありません。現実の世界では、いつでもドライバーになれるか、ドライバーではなくなりますが、オブジェクトではクラスを変更できません。 Personに1:0の関連性を持つ別のクラスを「Driver」とすることは、Personがドライバーであるか、またはいつでもドライバーではなくなるという事実をモデル化するため、適切なことです。 (会社は実際に「人」ではないため、Person to Entityの名前を変更します)。 –

関連する問題