Как правильно подавлять предупреждения EF?
Я хотел бы подавить эти предупреждения, но я не мог понять, как это сделать.
2 ответа
Это не предупреждения, которые вы видите, это ошибки. Вывод очень четко показывает, когда диагностическое сообщение является предупреждением или ошибкой. Вы дали компилятору номер ошибки (6002) и сказали ему подавить предупреждение с этим номером, но такого предупреждения не существует. Итак, вам удалось создать только дополнительную ошибку
В этом случае сообщение, которое вы пытаетесь подавить, является фатальной ошибкой компилятора; Ваш единственный вариант - исправить ваш код. Вы должны определить первичный ключ для каждого объекта Entity Framework, иначе Entity Framework не будет работать с ним. Формулировка ошибки немного сбивает с толку, поскольку подразумевает, что компилятор каким-то образом "обошёл" вашу проблему, но это не так.
Подробнее об этой конкретной ошибке и о том, как ее исправить:
Ошибка 6002: для таблицы / представления не определен первичный ключ
Вы правы, что это предупреждения, а не ошибки. Самый простой способ подавления предупреждений валидации от компилятора - отключить свойство Validate on Build модели EF. Для этого откройте свой.edmx и выберите фон. Откройте окно "Свойства" в Visual Studio и установите для параметра "Проверка при сборке" значение false. Если вы хотите проверить модель, просто откройте модель снова. Существует также опция контекстного меню правой кнопкой мыши на модели для проверки.
Еще лучше было бы создать файл.editorconfig самостоятельно, либо на уровне решения, либо на уровне проекта, и добавить правила, такие как Эрик упомянул в своем сообщении. Как упоминалось в этом ответе, вы можете добавить файл EditorConfig, который уже внесет в ваш проект или решение некоторые другие правила и передовые методы, если вы выберете вариант.NET.
В строке меню выберите " Проект" > " Добавить новый элемент"; или нажмите Ctrl+Shift+A
Выберите
editorconfig File (.NET)
шаблон для добавления файла EditorConfig с предварительно заполненным стилем кода.NET по умолчанию, форматированием и соглашениями об именах
Однако, чтобы полностью подавить предупреждения или предложения, вы должны использовать "нет" вместо "предложение". Например, для CA1707, который показывает предупреждение каждый раз, когда имя метода содержит '_', вам нужно будет добавить следующую запись в файл.editorconfig:
[*.cs]
dotnet_diagnostic.CA1707.severity = none
Однако мне нравится это правило. За исключением случаев, когда они применяются в тестовых проектах, которые по соглашению заканчиваются файлом Tests.cs. Затем я мог бы уточнить свое правило, чтобы рассмотреть этот случай:
[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none
Используя последнее правило, я могу перейти к файлу.editorconfig уровня решения, который будет применять это правило только к тестовым проектам.
В Visual Studio 2019 вы можете щелкнуть ошибку правой кнопкой мыши и подавить ее. Это создаст файл.editorconfig, например, со следующим содержимым:
dotnet_diagnostics.EF1000.severity = suggestion