0

プロバイダーとユーザーの2つの「エンティティ」テーブルがあります。プロバイダーとユーザーの両方が複数のアドレス(配送、請求など)を持つことができます。

次に、各エンティティテーブルにアドレス情報を配置するのではなく、両方に共通のテーブルを作成します。アドレステーブルです。たとえば、主キー(ID列)、エンティティタイプ(プロバイダーまたはユーザー)、エンティティキー(親エンティティテーブルの主キー)、およびアドレスタイプ(出荷など)を使用してアドレステーブルを作成することを検討しました。必要なアドレス情報を使用します。

私が抱えている問題の1つは、外部キーの制約です。アドレス行に関連する親エンティティテーブルの外部キーがある場合、データを挿入しようとすると外部キー違反があることがわかりました。

テーブル内のFKを削除してから、EF 4.1で手動マッピングを作成することを考えていましたが、これを行う方法がわかりません。

http://i49.tinypic.com/2dt56dv.png(これがテーブルの画像です-アドレステーブルのobjectidはuseridまたはprovideridを保持し、objecttypeは「USER」または「PROV」のvarcharです)

どうすればこれを回避できますか?アドレスに1つのテーブルを使用したいのですが、一方の親に関連する行がないと、一方の親に子を追加できません。もちろん、参照整合性のために外部キーを使い続けたいと思います。

ありがとう

4

1 に答える 1

0

これはかなり一般的なシナリオです。

[Provider table]
ProviderID (PK)
AddressID

[User table]
UserID (PK)
AddressID

[Address table]
AddressID (PK)
Street1
Street2....

プロバイダー テーブルに移動し、Provider.addressID から Address.AddressID に FK を追加します。

Users テーブルに移動し、User.addressID から Address.AddressID に FK を追加します。

これは機能するはずであり、FK に違反することはありません。

于 2012-07-05T14:18:42.437 に答える