2015-01-22 3 views
1

Я проектирование базы данных с помощью Code First/Fluent API и столкнулся этот вопрос:C# - EF 6 Множественные таблицы к одному FK

как отобразить FK, которые могут ссылаться на различные таблицы?

Это сценарий:

У меня есть график счетов с иерархией 5 уровня.

Сверху Боттона (один-ко-многим: Acc1 может иметь много ACC2 и так далее, и ACC2 ДОЛЖЕН иметь ACC1):

Account1 -> account2 -> account3 -> Account4 -> Account5

Пример: поставщик может находиться на любой карте счетов: 1 или 2 или 3 или 4 или 5. (Это правило в коммерческой автоматизации).

Как обрабатывать его с использованием свободного API?

DB Model

ответ

1

Мало того, что вы пытаетесь сделать не представляется возможным с EF; это невозможно в базе данных. Один внешний ключ может ссылаться только на одну таблицу.

Если требования к представлению данных для счета 1-5 то же самое, вы должны рассмотреть вопрос об объединении их в одну таблицу с внешним ключом, который сам ссылки:

Accounts 
------ 
AccountId int not null pk 
Level (1-5) 
ParentId int null fk (references Accounts(AccountId)) 
OtherColumnsAsNeeded 

Supplier 
------ 
SupplierId int not null fk (references Accounts(AccountId)) 
ParentId int not null fk (reference Accounts(AccountId)) 

Это позволит сделать моделирование в EF намного проще , Вам все равно необходимо будет поддерживать определенные бизнес-правила в коде (например, для учетной записи уровня 2 должен быть ParentId Level-1).

 Смежные вопросы

  • Нет связанных вопросов^_^