データベースに次のスキーマがあります。
- BillingReferences (ReferencingType tinyint , ReferencingId tinyint , ReferencedType tinyint , ReferencedId tinyint , IsActive bit ) - すべてのフィールド (IsActive を除く) は一意のインデックスの一部です。
- BillingType (BillingTypeId tinyint , Name varchar(50) )
ReferencedType および ReferencedType は、BillingTypes の外部キーです。BillingTypes には次の行が含まれます。
BillingTypeId | 名前
1 | ラベル
2 | 国
3 | 支払いプロバイダー
4 | 支払いオプション
5 | 銀行
ReferecingId および ReferencedId は、次のいずれかのエンティティの Id を表します (参照/参照タイプによって異なります)。
- 銀行(BankId tinyint , Name varchar(50) )
- 国(CountryId tinyint , Name varchar(50) )
- ラベル(LabelId tinyint、名前varchar(50) )
- PaymentProviders (PaymentProviderId tinyint、名前varchar(50) )
- PaymentOptions (PaymentOptionId tinyint、名前varchar(50) )
将来、各エンティティにはさらにいくつかの異なる列が追加される予定ですが、今のところは単純化のためのスキーマです。
すべてのエンティティ (国を除く) と国の間に (1- ) の接続があります。ラベルには、 Banks、PaymentProviders、および PaymentOptions への (1-) の接続があります。また、PaymentProviders には PaymentProviders への (1-*) の接続があります。
たとえば、BankId 201 の銀行を CountryId 3003 の国に接続する場合、BillingReferences に次のようなレコードが作成されます。
拡張性を考慮して、接続の種類ごとに接続/参照テーブルを作成しませんでした。別のエンティティを追加する場合は、そのテーブルを追加し、BillingReferences と BillingType にレコードを追加するだけです。
問題は、BillingReferences と各エンティティの間で条件付き外部キーを構成できず、EntityFramework で構成/マップできないように見えることです...
このタイプの実装を使用するチュートリアルや例は見つかりませんでした。接続ごとに参照テーブルを作成する必要がありますか、または EntityFramework でこれを構成する方法はありますか?
助けてくれてありがとう :)