Я пытаюсь настроить EDM на существующую инфраструктуру SQL Server и столкнулся с проблемой.Entity Framework не будет разрешать отношения PK-FK с составным первичным ключом?
EDM будет не разрешить отношение PK-FK к составному внешнему ключу.
Моя структура БД таблица выглядит следующим образом (имена изменены, чтобы защитить невинных):
- У меня есть таблица ЛИЦ, содержащую столбец INT под названием PerID (PK)
- У меня есть таблица OFFICE, содержащий столбец INT, называемый OffID (PK)
- Я связываю эти таблицы вместе, используя таблицу под названием OFFICEPERSONS, создавая отношения между многими и многими людьми между ОНЛАЙН И ПЕРСОНАЛАМИ. Эта таблица имеет два столбца INT, PerID и OffID, которые вместе образуют составной первичный ключ.
- У меня есть таблица под названием OFFICELOCATION, которая содержит два столбца INT, LocID и OffID. Эти два столбца содержат составной первичный ключ. Кроме того, OffID также является FK в таблице OFFICE.
- Наконец, у меня есть таблица под названием OFFICEPERSONSLOCATION. В этой таблице три столбца INT: PerID, OffID и LocID. Все три столбца содержат составной первичный ключ. LocID и OffID предоставляют FK отношения к ОФИЦИАЛЬНОМУ ОТЛОЖЕНИЮ, а OffID и PerID обеспечивают отношение FK к ОФИЦИАЛЬНЫМ ЛИЦАМ.
Со мной до сих пор? Надеюсь, я еще не потерял тебя. Когда все сказано и сделано, моя структура выглядит так:
Эта структура отлично работает на SQL Server. В EDM? Не так много. Это НЕ позволит мне установить связь между OFFICEPERSONSLOCATION и OFFICEPERSONS. Я получаю следующую ошибку:
Error 6037: Foreign key constraint 'FK_OFFICEPERSONSLOCATION_OFFICEPERSONS' has been omitted from the storage model. Column 'OffID' of table 'Model.Store.OFFICEPERSONSLOCATION' is a foreign key participating in multiple relationships. A one-to-one Entity Model will not validate since data inconsistency is possible.
Да? Непоследовательность данных?!? Как?
Как я могу получить свою инфраструктуру сущности, чтобы распознать это?
Я понимаю, что Entity Framework обычно не представляет таблицы перекрестных ссылок, вместо этого связывая две таблицы с отношением «многие ко многим» без таблицы перекрестных ссылок. Связано ли это с тем, что я пытаюсь связать таблицу перекрестных ссылок с другой таблицей перекрестных ссылок? –
Мне сообщили, что моя версия EF может иметь какое-то отношение к ней. Не знаю, какую версию я запускаю, но я думаю, что она предшествует EF4. Я запускаю VS2010. –