Представления и Entity Framework - PullRequest
21 голосов
/ 05 августа 2009

Я создал представление в своей базе данных, которое я хотел бы включить в мою модель сущности. Тем не менее, когда я пытаюсь обновить модель сущности через VS 2008, предупреждающее сообщение информирует меня о том, что добавляемая мной таблица или представление не имеет первичного ключа.

Похоже, что для добавления вида к модели в нем должно быть ключевое поле! Как я могу добавить это представление в мою модель, если представлениям не разрешено иметь ключевое поле, по крайней мере в Firebird, который является DBMRS, которую я использую.

Есть идеи, как это решить?

Ответы [ 2 ]

11 голосов
/ 20 октября 2011

Здесь есть отличный ответ: Entity Framework и SQL Server View (см. Принятый ответ: https://stackoverflow.com/a/2715299/53510.)

EF выводит PK для представлений путем объединения всех необнуляемых полей. Вы можете использовать ISNULL и NULLIF, чтобы манипулировать обнуляемостью столбцов представления, заставляя EF выбирать нужный вам PK.

0 голосов
/ 12 марта 2015

В Firebird нет ключей. Вместо этого установите одно (или более) поле как «не нулевое» с помощью следующей команды:

update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')

Затем повторно импортируйте базу данных в платформу сущностей.

...