У меня есть следующие схемы в базе данных:Entity Framework: Условный внешний ключ
- BillingReferences (ReferencingType TINYINT, ReferencingId TinyInt, ReferencedType TINYINT, ReferencedId TINYINT, IsActive бит) - где все поля (кроме IsActive) являются частью уникального индекса.
- BillingType (BillingTypeId TINYINT, имя VARCHAR (50))
ReferencingType и ReferencedType является внешним ключом BillingTypes. BillingTypes содержит следующие строки:
BillingTypeId | Наименование
1 | Этикетки
2 | Страны
3 | PaymentProviders
4 | PaymentOptions
5 | Банки
ReferecingId и ReferencedId представляют Id одного из следующих лиц (в зависимости от ссылочной/REFERENCING Тип):
- Банки (BankId TinyInt, имя VARCHAR (50))
- Страны (CountryId TinyInt, имя VARCHAR (50))
- Этикетки (LabelId TinyInt, Имя VARCHAR (50))
- PaymentProviders (PaymentProviderId TINYINT, Имя VARCHAR (50))
- PaymentOptions (PaymentOptionId TINYINT , Название varchar (50))
В будущем каждая сущность будет иметь несколько разных столбцов, но на данный момент это схема для простоты.
Между странами (за исключением стран) существует связь (1 - ). Этикетки имеют соединение (1-) с банками, PaymentProviders и PaymentOptions. И PaymentProviders есть соединение (1- *) к PaymentProviders
Так, например, если я хочу подключить банк с BankId 201 страны с CountryId 3003 у меня будет запись в BillingReferences, который будет выглядеть так : ReferencingType = 5 ReferencingId = 201 ReferencedType = 2 ReferencedId = 3003 IsActive = 1
мы не сделали подключение/справочную таблицу для каждого типа подключения из-за рассмотрения расширяемость - Если мы хотим, чтобы добавить другой объект, который нам нужно сделать, это добавить его таблицу и добавить записи для нее в BillingReferences и BillingType.
Проблема заключается в том, что я не могу настроить условный внешний ключ между BillingReferences и каждого из субъектов, и я не могу настроить/отобразить его с EntityFramework либо ...
Я не смог найти любой учебник или пример, который использует этот тип реализации. Должен ли я создать справочную таблицу для каждого соединения, или есть способ настроить ее с помощью EntityFramework?
Спасибо за помощь :)
«если вы ВСЕГДА не хотите, чтобы все ссылки на тип» - более или менее ... Мне всегда нужно показывать, допустим, все страны, связанные с конкретным Банком, или все банки, связанные с определенной меткой. Пользователь должен уметь связывать/деассоциировать любой объект, который он хочет, с выбранным объектом. – Captain