Подтвердить что ты не робот

Ошибка 6002: в таблице/представлении не указан первичный ключ

Я получаю пару этих ошибок, которые имеют прекрасный смысл, поскольку они находятся на представлениях. Я понимаю, что они означают, однако я ищу способ предотвратить создание предупреждающего сообщения с помощью модели. Я думал, что могу редактировать XML файл .edmx, чтобы удалить ошибки, но предупреждения будут восстановлены. У меня есть ключ, определенный на представлениях, хотя он, похоже, не помог.

Как избавиться от этих предупреждений? Или каким-то образом можно предположить, что Entity Framework понимает, что это не редактируемая таблица, и ей не нужен первичный ключ? Я прошу в основном из точки зрения эстетики проекта (мне не нравится видеть предупреждения в моем списке ошибок).

4b9b3361

Ответ 1

Я прекрасно понимаю, откуда вы. Это одна из самых больших неприятностей, с которыми мне приходилось сталкиваться, пытаясь справиться с EF и, по-видимому, это очень распространенная проблема.

Решение, которое работало для меня, состояло в том, чтобы открыть EDMX с представлением в режиме конструктора и назначить первичный ключ. Неважно, что это такое, если есть. Вы щелкните правой кнопкой мыши на столбце, который вы хотите установить в качестве первичного ключа, и выберите Entity Key (это флажок). Возможно, вам придется выйти и перезапустить Visual Studio, пока это предупреждение не решит уйти.

Я надеюсь, что это сработает и для вас. Но даже если это так, это кратковременное исправление, так как при следующем обновлении вашего представления у него, вероятно, будет такая же проблема. Но до тех пор, как эти шаги работают, для исправления потребуется всего несколько секунд.

Кроме того, здесь некоторые ссылки, которые могут вам пригодиться:

Ответ 2

В моем случае это легко разрешилось, ниже приведены шаги:

  • Очистите решение.
  • Закрыть Visual Studio
  • Открыть Visual Studio
  • Очистка и построение решения

Прежде чем пытаться что-либо предпринять, можно попытаться убедиться, что вы ничего не изменяете вручную в edmx.

Надеюсь, это поможет.

Ответ 3

Мне повезло в EF4 и EF5, используя метод, описанный http://www.hilmiaric.com/?p=95, используя rownumber как идентификатор

SELECT ISNULL ((ROW_NUMBER() OVER (ORDER BY XXX ASC)), 0) AS 'ID',

Но у меня нет решения для EF5 и выше. Последний раз пробовал 6.1.3

Ответ 4

Entity Framework может быть настолько расстраивающим время от времени. Я действительно хочу, чтобы Microsoft сошла с ума и устранила все проблемы с EF Visual Modeler и обновила модель из базы данных. Я только что провел последние полчаса, очистив повторяющиеся поля в представлении с помощью ручной модификации файла .edmx, и я также столкнулся с плохой сборкой, и эта проблема еще раз:

 <!--Errors Found During Generation:
  warning 6002: The table/view 'BMP_DBA.BMP_INST_DATA_SEARCH_VIEW' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view.
 -->

Увы, мне пришлось делать то, что я всегда делал, и вручную установить ключ Primary, щелкнув правой кнопкой мыши его в дизайнере, а затем перезапустить Visual Studio и затем перестроить приложение. Когда я перестраиваю, я все еще получаю предупреждение в файле .edmx, но теперь сборка работает. Это всего лишь один из нюансов работы с EF.

Ответ 5

SELECT ISNULL ([A]. [Id], 999) [Id]