Я пытаюсь использовать EF для моделирования существующей базы данных SQL. БД является мультитенантной благодаря наличию столбца clientID в каждой отдельной таблице (я не могу это изменить). У меня есть структура таблицы, как показано ниже.
Столбцы таблицы ItemID:
ClientID (pk)
ItemID (pk)
ItemName
Столбцы таблицы 'Элементы':
ClientID (PK)
ItemID (PK) [FK to ItemID.ItemID]
Version (PK)
ItemAttribute1
ItemAttribute2
ItemAttribute3
БД предназначена для хранения предыдущих версий (строк) объекта «Элемент», следовательно, столбца «Версия» и PK.
Я новичок в EF и пытаюсь принять его для своего проекта. Однако, похоже, что EF не может справиться с этой ситуацией очень хорошо. Я открыт для всех идей, включая использование хранимых процедур или представлений вместо доступа к таблицам непосредственно из EF. Как насчет того, чтобы избавиться от PK и использовать вместо этого «независимые» отношения?
Одна конкретная проблема, с которой я столкнулся, заключается в том, что EF (по крайней мере, дизайнер) требует, чтобы все PK в одной таблице были сопоставлены со всеми столбцами PK в любой связанной таблице. Это не имеет смысла для меня, так как пример, который я привел, никогда не будет работать с учетом этого ограничения. Я пытаюсь заставить Items
наследовать от ItemID
. Я получаю ошибку:
Ошибка 3003: проблема в отображении
фрагменты, начинающиеся со строки 170: все
ключевые свойства (ItemID.ClientID,
ItemID.ItemID) EntitySet ItemID
должен быть сопоставлен со всеми ключами
свойства (Items.ClientID,
Items.ItemID, Items.Version) таблицы
Пункты.
Я искал все, что могу найти по этой теме, и никто не ответил на эти вопросы для меня. Я ценю любую помощь. Спасибо.