В моей базе данных есть следующая базовая структура таблицы (которую я не могу изменять):
Адрес
(PK) AddressId
Line1
...
Человек
(PK) PersonId
(FK) AddressId
FirstName
...
Student
(PK) StudentId
(FK) PersonId
StudentNumber
...
Я хотел бы объединить Person и Student в сущность Student, используя подход «Таблица для каждого типа». Однако эти таблицы не соответствуют ограничению EF, согласно которому в подстоле (Student) должны быть одинаковые столбцы PK и FK. В отличие от моего БД, в котором они являются отдельными столбцами.
Моя следующая идея состояла в том, чтобы создать представление и создать сущность вне представления. Я создаю представление с именем StudentView с объединением и всеми столбцами. Затем я импортировал это представление в модель EF. Все было хорошо, пока я не попытался обновить. Поскольку представления не могут обновляться, я создал хранимые процедуры «Вставить / Обновить / Удалить» и связал их со своей сущностью «Студент» (я сделал дополнительные параметры sp для всех отношений FK).
Однако теперь я получаю следующую ошибку:
Ошибка 2027: Если EntitySet или AssociationSet включает в себя отображение функций, все связанные сущности и AssociationSets в EntityContainer также должны определять сопоставления функций.
Мне не удалось найти много информации об этом. Мне кажется, что это означает, что если одна сущность использует хранимые процедуры, то все сущности используют (или, по крайней мере, все сущности, на которые ссылаются, что в моем случае равно примерно всем). Однако другие сообщения об ошибках, которые я получил от EF, были обманчивы.
Кто-нибудь знает, как пройти через это? Кроме того, любые предложения о том, как использовать Table-per-Type в моем случае (что я не считаю возможным), также будут полезны.