Использование внешнего ключа в представлении SQL в Entity Framework

Я относительно новичок в Entity Framework.

Я создал базу данных с двумя таблицами: Accounts и Assignments.

Accounts имеет первичный ключ AccountId, который используется в качестве внешнего ключа в таблице Properties. Мне очень нравится, что Entity Framework автоматически выбирает отношение внешнего ключа и позволяет мне получать доступ к строкам в Assignments как к свойству каждой строки из Accounts.

Я пошел дальше и создал новый объект View, который возвращает все столбцы из Accounts вместе с некоторой другой информацией. Однако, когда я получаю данные из представления в SQL с помощью Entity Framework, он больше не автоматически ссылается на связанные строки в таблице Assignments.

Как я могу получить желаемое поведение, используя представления с Entity Framework


person Vivian River    schedule 13.08.2012    source источник


Ответы (2)


Это может работать в EF, но разработчик EF не может вывести ваш FK из представления, поскольку БД не сообщает ему, где находятся FK в столбцах представления (поскольку они, естественно, находятся в базовых таблицах, а не в представлении). сам).

Вам нужно будет вручную отредактировать EDMX либо через конструктор, либо в XML, чтобы получить эти свойства.

person Craig Stuntz    schedule 13.08.2012
comment
Прошло более 4 лет, этот ответ все еще единственный способ? Я не смог найти альтернативное автоматизированное решение при поиске в Интернете. - person John L.; 29.12.2016

Решение, которое сработало для меня, состояло в том, чтобы включить соответствующие данные в представление, поэтому мне не нужно было использовать FK.

Например, включите PK для таблицы Assignment в представление, добавив в представление соответствующий SQL.

Таким образом, я мог присоединиться к представлению в LINQ, не обращаясь к сгенерированному свойству в EDMX.

person Philip Johnson    schedule 25.10.2019