Я создаю новый вид модели. Я получаю сообщение об ошибке
Я запускаю VS 2013 как администратор.
Я посмотрел на Совместимость MvcScaffolding с VS 2013 RC по команде line?, но, похоже, это не решило проблему.
VS2013 C # 5 MVC5 Новый проект начался в VS 2013.
Я использую VS2017. Когда я пытаюсь создать «контроллер ASP.NET MVC 5 с представлениями с использованием Entity Framework», я получаю следующую ошибку:
Есть идеи, что происходит не так? Я перепробовал все, что вернулось в Google.
Я все еще новичок в MVC, но я начинаю понимать общую картину, однако я все еще путаю такие вещи, как namespace или using, и Я ДУМАЮ, что это может быть тот случай, когда я ошибаюсь -ссылка на что-то.
Вопрос: я пытаюсь добавить представление EmployeeInfo с шаблоном List, с классом модели: EmployeeInfo, с классом контекста данных: MoviesEntities
Автоматическое создание не будет выполнено. Когда я щелкаю правой кнопкой мыши метод контроллера EmployeeInfo. Я выбираю опцию «Добавить представление», заполняю информацию, затем нажимаю «Добавить», и во время экрана загрузки строительных лесов появляется следующая ошибка.
Произошла ошибка при запуске выбранного генератора кода: «Не удалось получить метаданные для« WebApplication2.Models.EmployeeInfo ».
Вопрос
Я очень новичок в asp.net Среда C #, и я получаю следующую ошибку.
введите описание изображения здесь
Когда придет время, когда я собираюсь открыть свой проект, появится эта ошибка. С тех пор я не мог продолжить свою работу.
А также, когда я собираюсь добавить представление, также появится следующая ошибка.
Вот мой контроллер (AccountController.cs)
Вот мой класс модели (AccountViewModel.cs)
Вот мой класс DbContext.
Итак, я хотел добавить представление для моего контроллера UpdateProfile. Но я не мог этого сделать из-за вышеуказанных ошибок.
1. подсказка — ищите Inner Exception , это будет более конкретно
Я работаю над проектом WPF, C# 3.0, и я получаю эту ошибку:
Error 1 Metadata file
‘WORK=- ToolsVersionManagementSystemBusinessLogicLayerbinDebug
BusinessLogicLayer.dll’ could not be found C:-=WORK=- Tools
VersionManagementSystemVersionManagementSystemCSC VersionManagementSystem
Я проверил заказы на сборку и конфигурации зависимостей.
это очень раздражает и комментировать, строить и раскомментировать, сборка становится чрезвычайно утомительной.
Ответов
У меня была та же проблема. Visual Studio не создает проект, на который ссылаются.
- щелкните правой кнопкой мыши на решении и выберите Свойства.
- нажать Настройки слева.
- убедитесь, что установлен флажок “построить” для проекта, который он не может найти. Если он уже установлен, снимите флажок, нажмите Применить и установите флажки еще раз.
это все еще может произойти в более новых версиях Visual Studio (я только что это произошло в Visual Studio 2013):
еще одна попытка-закрыть Visual Studio и удалить .suo файл, который находится рядом с . (Он будет повторно сгенерирован в следующий раз, когда вы Save all (или выйти из Visual Studio)).
у меня была эта проблема при добавлении новых проектов в решение на другой машине, а затем вытаскивании ревизий, но .suo файл может быть поврежден в другие случаи также приводят к очень странному поведению Visual Studio, поэтому удаление-одна из вещей, которые я всегда пытаюсь.
обратите внимание, что удаление .suo файл сбросит проект(ы) запуска решения.
на и здесь.
предложенный ответ не работа для меня. Ошибка-это приманка для другой проблемы.
Я узнал, что я нацелен на немного другую версию .NET, и это было помечено как предупреждение компилятором, но это вызывало сбой сборки.
Это должно быть помечено как ошибка, а не предупреждение.
Ну, мой ответ-это не только итог решения, но он предлагает больше, чем это.
В общем решения:
У меня было четыре ошибки такого рода (“файл метаданных не найден”) вместе с одной ошибкой, говорящей ” исходный файл не может быть открыт (“неопределенная ошибка”)”.
Я попытался избавиться от ошибки “файл метаданных не может быть найден”. Для этого я прочитал много постов, блогов и т. д. и найденные эти решения могут быть эффективными (обобщая их здесь):
- перезапустите Visual Studio и повторите попытку построения.
- Если вышеуказанные решения не работают, то следуйте последовательности, упомянутой в шаге 2 выше, и даже если все флажки отмечены, снимите их, проверьте еще раз и попробуйте построить снова.
- порядок сборки и зависимости проекта:
- Проверьте путь пропавших без вести .dll:Проверьте путь пропавших без вести .файл DLL. Если путь содержит пробел или любой другой недопустимый символ пути, удалите его и повторите попытку построения.Если это причина, то отрегулируйте порядок сборки.
мой частный случай:
Я пробовал все шаги выше с различными перестановками и комбинациями с перезапуском Visual Studio несколько раз. Но мне это не помогло.
Итак, я решил избавиться от другой ошибки, с которой я столкнулся (‘Source Не удалось открыть файл (‘Unspecified error’)’).
я наткнулся на сообщение в блоге:TFS Error-не удалось открыть исходный файл (‘Unspecified error’)
Я попробовал шаги, упомянутые в этом сообщении в блоге, и я избавился от ошибки ‘ исходный файл не может быть открыт (‘неопределенная ошибка‘)’ и удивительно, что я избавился от других ошибок (’файл метаданных не найден’) as что ж.
попробуйте все решения, как указано в разделе (1) выше (и любые другие решения) для избавления от ошибки. Если ничего не получится, в соответствии с блогом, упомянутым в разделе (2) выше, удалите записи всех исходных файлов, которые больше не присутствуют в системе управления версиями и файловой системе .файл csproj.
в моем случае это было вызвано несоответствием версий .NET Framework.
один проект был 3.5, а другой ссылался на проект 4.6.1.
закрытие и повторное открытие Visual Studio 2013 работало для меня!
Ну, ничего в предыдущих ответах не сработало для меня, поэтому это заставило меня задуматься о том, почему я нажимаю и надеюсь, когда как разработчики мы должны действительно попытаться понять, что здесь происходит.
Мне казалось очевидным, что эта неправильная ссылка на файл метаданных должна где-то храниться.
быстрый поиск .файл csproj показал виновные строки. У меня был раздел под названием , который, казалось, висел на старом неправильном путь_к_файлу.
Так что простое исправление действительно:
- резервное копирование .файл csproj.
- найти неправильные пути .csproj файл и переименовать соответствующим образом.
пожалуйста убедитесь, что вы резервное копирование старого .csproj перед вами скрипка.
Я получил ту же ошибку “файл метаданных ‘.dll “не удалось найти”, и я попробовал несколько вещей, описанных выше, но причиной ошибки было то, что я ссылался на сторонний DLL-файл, который был нацелен на версию .NET выше, чем моя целевая версия проекта .NET. Таким образом, решение состояло в том, чтобы изменить целевую структуру моего проекта.
Я также встретил эту проблему. Во-первых, вы должны вручную построить проект DLL, щелкнув правой кнопкой мыши, построить. Тогда это сработает.
в моем случае у меня есть установленный каталог ошибочными способами.
Если ваш путь решения что-то вроде “Мой проект%2c очень популярен%2C модульное тестирование%2C программного и аппаратного обеспечения.zip”, он не может разрешить файл метаданных, возможно, мы должны предотвратить некоторые недопустимые слова, такие как %2c.
переименование пути в обычное имя разрешило мою проблему.
Я добавил новый проект в моей решение и начал получать это.
причина? Проект, который я привел, был нацелен на другую .NET framework (4.6 и мои два других были 4.5.2).
Я тоже вытаскивал волосы с этой проблемой, но после попытки предыдущих ответов единственное, что сработало для меня, – это открыть каждый проект в моем решении 1 на 1 и построить их индивидуально.
затем я закрыл Visual Studio 2013, снова открыл свое решение, и оно было скомпилировано нормально.
Это странно, потому что, если я щелкнул каждый проект в моем обозревателе решений и попытался построить их таким образом, все они потерпели неудачу. Мне пришлось открыть их в одиночестве. решения.
для меня это произошло, когда я включил новый проект в решение.
я перешел на версию .NET 4.5.2, как и другие библиотеки, и это сработало.
для меня он пытался найти DLL в пути, который раньше содержал проект, но мы переместили его в новый каталог. Решение имело правильный путь к проекту, но Visual Studio каким-то образом продолжала искать в старом месте.
решение: переименуйте каждый проблемный проект-просто добавьте символ или что – то еще-затем переименуйте его обратно в исходное имя.
Это должно сбросить какой-то глобальный кэш в Visual Studio, потому что это устраняет эту проблему и некоторым это нравится, в то время как такие вещи, как Clean, нет.
для меня работали следующие шаги:
- найти проект, который не строит
- удалить/добавить ссылки на проекты в решении.
мой экземпляр проблемы был вызван общим проектом, в котором было Дублированное имя класса (под другим именем файла). Странно, что Visual Studio не смогла обнаружить это и вместо этого просто взорвала процесс сборки.
Я получил эту проблему в Visual Studio 2012 в решении, которое имело много проектов. Перестроение каждого проекта в решении вручную в том же порядке, что и порядок сборки проекта (щелкните правой кнопкой мыши и перестройте в обозревателе решений), исправил его для меня.
В конце концов я добрался до того, что дал мне ошибку компиляции. Я исправил ошибку, и после этого решение будет построено правильно.
в моем случае, проблема была вызвана простой ошибке построения,
ошибка CS0067: событие ” XYZ ” никогда не используется
Это, по какой-либо причине, не отображается в окне ошибки.
из-за этого система сборки Visual Studio, казалось, пропустила ошибку и попыталась построить зависимые проекты, что, в свою очередь, не удалось с раздражающим сообщением метаданных.
рекомендация-как глупо, как это может быть звук:
первый взгляд на ваш Окно Вывода!
в моем случае проблема заключалась в том, что я вручную удалил файл без компиляции, который был помечен как “отсутствует”. Как только я удалил ссылку на Теперь отсутствующий файл и перекомпилировал – все было хорошо.
У меня была та же проблема. В моем случае проект все равно будет строиться в режиме выпуска, и именно тогда, когда я попытался построить в debug, он потерпел неудачу.
то, что я сделал, чтобы исправить проблему, было просто скопировать все DLL (и другие файлы из моей папки выпуска) в мою папку отладки. После этого для каждого проекта, ошибки растаяли.
Если у вас есть пробел в имени решения, это также вызовет проблему. Удаление пробела из имени решения, поэтому путь не содержит %20, решит эту проблему.
просто указывая на вопиюще очевидное: если у вас нет “показать окно вывода при запуске сборки” включен, убедитесь, что вы заметили, если ваша сборка не работает (небольшая ошибка “build failed” в левом нижнем углу)!!!!
у меня была эта ошибка, когда я пытался опубликовать веб-приложение. Оказалось, что одно из свойств класса было обернуто в
но использование свойства не было. Публикация была выполнена в конфигурации выпуска без DEBUG символ, очевидно.
похоже, что зависимости сборки были неправильными. Удалив *.файлы suo исправили проблемы, которые у меня были.
для моего случая это было то, что я прокомментировал классы в определенном (пустом) пространстве имен:
когда я удалил код пространства имен и команды импорта (использования) из него – это исправило проблему.
в сборке он также говорил-вместе с отсутствующим DLL-файлом проекта:
ошибка CS0234: имя типа или пространства имен ” W “не существует в пространстве имен” X. Y. Z ” (отсутствует ссылка на сборку?)
У меня тоже была такая же ошибка. Он прячется, как в нижеприведенном пути.
Путь, который я упомянул для файла DLL, похож на “D:Assemblies папкаAssembly1.файл DLL.”
из-за этого изменения имени пути сборка не может быть извлечена из исходного пути и, следовательно, выдает ошибку “метаданные не найдены”.
решение находится в вопросе переполнения стека как заменить все пробелы на %20 в C#?.
похоже, что такие ошибки связаны с тем, что Visual Studio не предоставляет правильную информацию об ошибке. Разработчик даже не понимает причину неудачной сборки. Это может быть синтаксическая ошибка или что-то еще. В общем, чтобы решить такие проблемы, вы должны найти корень проблемы (например, посмотрите журнал сборки).
в моем случае проблема была в том, что Error List окно не показало никаких ошибок. Но на самом деле был синтаксис ошибки; я нашел эти ошибки в Output Окно, и после их исправления, проблема была решена.
Я столкнулся с той же проблемой. В моем случае я ссылался на проект библиотеки классов с более высоким .Net версия чем мой проект и VS не удалось построить проект и вызвали ту же ошибку, которую вы опубликовали.
Я просто установил .Net версия моего проекта библиотеки классов (тот, который сломал сборку), идентичный .Net-версии ссылочного проекта и решенной проблемы.
эта ошибка может отображаться при использовании поддельных сборок. Удаление подделок приводит к успешной сборке проекта.
Я создаю новый вид модели.
Сообщение об ошибке, которое я получаю, –
Я посмотрел на совместим ли MvcScaffolding с VS 2013 RC по командной строке? но похоже, это не решило проблему.
VS2013
C#5
MVC5
Новый проект стартовал в VS 2013.
У меня была эта проблема при работе через курс Pluralsight “данные родитель-потомок с EF, MVC, Knockout, Ajax и Validation”. Я пытался добавить Новый Деталь С помощью шаблона контроллер MVC 5 с представлениями, используя Entity Framework.
класс контекста данных, который я использовал, включая переопределение метода OnModelCreating. Переопределение было необходимо для добавления некоторых явных конфигураций столбцов базы данных, где значения по умолчанию EF были неадекватными. Это переопределение было простым, работающим и без ошибок, но (как отмечалось выше) это мешало генерации кода лесов контроллера.
решение, которое сработало для меня:
1-я удалил (прокомментировал) мое переопределение OnModelCreating и шаблон лесов завершен без сообщений об ошибках – мой код контроллера был сгенерирован, как ожидалось.
2-однако, пытаясь построить проект, задохнулся, потому что “модель изменилась”. Поскольку мой код контроллера был теперь правильно сгенерирован, я восстановил (без комментариев) переопределение OnModelCreating, и проект был построен и успешно запущен.
проблема была с поврежденной сетью.каталог конфигурации и пакетов.
Я создал новый проект и скопировал свои файлы кода в новый рабочий проект, позже я вернулся и запустил различия в файлах конфигурации и папку diff в самом проекте.
проблема заключалась в том, что обновления сильно выбросили мой конфигурационный файл с большим количеством артефактов обновления, которые я в конечном итоге очистил.
вторая проблема заключалась в том, что старый проект тоже висит на более старые библиотеки DLL, которые должны были быть стерты с применением пакета Nuget. Поэтому я вытер папки obj и bin, а затем папку пакета. После того, как это было сделано, я смог получить старый проект отремонтирован и здание чисто.
Я не изучал, почему файл конфигурации или папка пакета были настолько borked, но я предполагаю, что это одна из двух вещей.
- возможно, пакет nuget имеет недостаток
- система управления версиями TFS заблокировала nuget от правильного обновления различных зависимостей.
с тех пор, прежде чем применять какие-либо обновления, я проверяю все. Однако, поскольку я не обновил EF в то время, я нет доказательств того, что это решило мою проблему EF или лесов.
Я смог решить эту проблему и немного лучше понять, что происходит. Лучшая часть заключается в том, что я могу воссоздать проблему и устранить ее, чтобы быть уверенным в моих объяснениях.
разрешение состояло в том, чтобы установить точно такую же версию Entity Framework как для проекта уровня доступа к данным, так и для веб-проекта.
мой уровень доступа к данным имел Entity Framework v6.0.2 установленный с помощью NuGet, веб-проект не был установлен Entity Framework. При попытке создать контроллер веб-API с шаблоном Entity Framework Entity Framework устанавливается автоматически, но его более старая версия 6.0.0. Я был удивлен, увидев две версии Entity Framework, более новые в моем проекте уровня данных и более старые в моем веб-проекте. Однажды я удалил старую версию и установил более новую версию в веб-проекте, проблема ушла.
Я проверил все свои проекты, и каждый из них имел ту же версию Entity Framework. В моем случае проблема заключалась в том, что один из моих проектов был нацелен на .Net 4.0, в то время как остальные были .Net 4.5.
моя проблема была похожа на многие здесь, общее сообщение об ошибке при попытке использовать леса, чтобы попытаться добавить новый контроллер (ef6, webapi). Первоначально я мог использовать леса примерно для 15 контроллеров, после этого он просто перестал работать один день.
- открыть рабочую папку на жестком диске вашего решения.
- удалить все внутри папки BIN
- удалить все внутри папки OBJ
- чистое решение, перестроить решение, добавить контроллер через леса
вуаля! (для меня)
и в случае, если вы разрабатываете приложение WinForms, попробуйте посмотреть на App.config.
У меня точно такая же проблема.
Впервые столкнулся с этим, следуя по курсу Pluralsight “данные родитель-потомок с EF, MVC, нокаутом, Ajax и проверкой”.
Я использую MVC 5, EF 6.1.1 и framework 4.5.2.
даже после обновления моего VS2013 до обновления 4 Эта ошибка все еще сохраняется.
удалось обойти эту неприятную проблему, изменив DbSet на IDbSet внутри класса DbContext.
Ответ был первоначально от здесь.
Что сработало для меня, чтобы решить эту проблему: закройте решение и откройте проект, щелкнув файл проекта, а не файл решения, добавьте контроллер и качайте своего дядю
ничто из вышеперечисленного не помогло мне.
Я обнаружил, что причиной моей проблемы было переопределение OnModelCreating в моем классе контекста, от которого зависел элемент scaffold. Комментируя этот метод, затем строительные леса работают.
Я хочу, чтобы Microsoft выпустила меньше багги-кода.
(Я подозреваю, что есть по крайней мере 10 различных вещей, которые могут вызвать это, о чем свидетельствуют различные ответы, так что некоторые люди находят работу для них, но которые не работают для других, поэтому я не предлагаю, чтобы мое решение работало для все.)
что работало для нас (используя VS 2013 Express for Web на 64 бит Windows 7):
Это (леса) было не работа в конфигурации сборки Debug/x64. Но делаю следующее (И кажется, что каждый шаг необходим, не мог выяснить, как сделать это более простым способом), кажется, работает для нас.
- сначала переключитесь на Debug / x86–используйте диспетчер конфигурации решения (щелкните правой кнопкой мыши) для всех проектов в вашем решении. (Debug / любой процессор также может работать).
- очистить решение.
- завершение работы Visual Studio. (не могу заставить его работать, если я пропущу этого).
- Открыть Visual Studio.
- откройте свое решение.
- построить решение.
- теперь попробуйте добавить элементы лесов; для нас это сработало на данный момент, мы больше не получили сообщение об ошибке, говорящее что-то о “была ошибка при запуске выбранного генератора кода”.
Если вам нужно вернуться к конфигурации сборки лесов-нерабочей, вы можете сделать это после того, как вы построили все, что вам нужно на данный момент. Мы переключились обратно на наш Debug / x64 после лесов, что нам нужно.
Я видел эту ошибку с новым проектом MVC5 при ссылке на модель из другого проекта. Проверка пути, EntityFramework.dll файлы действительно существуют. Но только для чтения. Монитор процессов показал, что произошла ошибка при попытке удалить файл. Установка и EntityFramework.dll в папке “Мои пакеты” (копия, хранящаяся в системе управления версиями) для записи обошла эту ошибку, но вызвала другую, сказав, что она не может загрузить сборку EntityFramework, потому что она не соответствует той упоминаемый. Мой класс модели был определен в другом проекте, который использовал более старую версию Entity framework. Проект MVC5 ссылался на EF 6, в то время как модель была из проекта ссылки EF 4.4. Обновление до EF 6 в проекте модели исправило это для меня.
У меня была эта проблема при попытке добавить контроллер Api в мой MVC ASP.NET веб-приложение по совершенно другой причине, чем другие приведенные ответы. Я случайно включил StringLength С IndexAttribute объявление для целочисленного свойства из-за операции копирования и вставки:
Как только я избавился от IndexAttribute объявление я смог добавить контроллер Api для модели, которая содержала оскорбительное свойство (NumTrainingPasses).
чтобы помочь поисковым системам, вот полное сообщение об ошибке, которое я получил, прежде чем я исправил проблему:
произошла ошибка при запуске выбранного генератора код:
не удалось получить метаданные для владельца.Модели.MainRecord’. Свойство
“NumTrainingPasses”не является строковым или байтовым массивом. Длина может быть
настроен для свойств массива строк или байтов.
обычно это связано с форматом вашего веб-сайта.config
перестроить решение и поиск в разделе ошибки, сообщения вкладки.
Если у вас возникли проблемы с веб.config вы увидите его там.
Исправьте это и повторите попытку.
пример: у меня connectionstring вместо connectionString
Если это кому-то поможет, я переименовал пространство имен, в котором находилась модель, затем перестроил проект, затем снова переименовал его и перестроил, а затем он работал.
перестроить решение работает для меня. перед перестроением я нахожу, что номер ссылок моего “ApplicationDbContext” равен нулю, что невозможно, поэтому перестройте решение, теперь все в порядке.
Я часто сталкиваюсь с этой ошибкой, работая с MVC5 и EF, когда я создаю модели и контекст в отдельном проекте (мой уровень доступа к данным), и я забываю добавить строку контекстного подключения к веб-сайту проекта MVC.Конфиг.
У меня также есть эта проблема с Msvs2013 Update 4 и EF 6.0
Сообщение, которое я получил, было:
У меня есть модель с 10 класса. Я без проблем собрал элементы в начале проекта.
через несколько дней, добавив функциональность, я попытался построить другой класс из модели, но ошибка удерживала меня от этого.
Я попытался обновить MSVS от обновления 2 до обновления 4, прокомментируйте мой метод OnModelCreating и другие идеи, предложенные безрезультатно.
в качестве временного способа продолжения проекта я создал другой asp.net проект, вставил туда мои классы моделей (я использую fluent api, поэтому на них мало аннотаций) и успешно создал мой контроллер и представления.
после этого я вставил созданные классы в исходный проект и исправил некоторые ошибки (в основном имена dbset).
Кажется, это работает, хотя я полагаю, что я буду все еще находите ошибки, связанные с отношениями между классами (из-за отсутствия плавной конфигурации при создании).
Я надеюсь, это поможет другим пользователям.
Это произошло со мной, когда я попытался создать новый эшафот вне папки верхнего уровня для данного площадью.
Я просто повторно выбрал свою область, и проблема ушла:
обратите внимание, что после генерации лесов вы попадете в место, где вы не сможете создайте новый помост без повторного выбора области сначала (по крайней мере, в VS 2013).
- vs2013 обновления 4
- ef 5.0.0
- ibm db2connector 10.5 fp 5
изменить сети.конфигурационный файл как таковой:
удален поставщик / ы из тега ef:
добавлены теги строк подключения в разделах конфигурации:
У меня была та же проблема, когда в моем MVC app EF reference property (в окне свойств) “конкретная версия” была отмечена как False и в моем другом проекте (содержащем DBContext и модели), который был рефренирован из MVC app, что EF reference property был отмечен как True. Когда я отметил Это как ложь, все было в порядке.
моя проблема была похожа на многие здесь, универсальное сообщение об ошибке при попытке добавить новый вид или использование лесов для добавления нового контроллера. я узнал, что MVC 5 и EF 6 modelbuilder не являются хорошими друзьями:
Мое Решение:
1.Прокомментируйте modelBuilder в своем классе контекста.
2.Чистое Решение, Перестроить Решение.
3.Добавить представление и контроллер через леса
4. Раскомментируйте в modelbuilder.
может быть, немного необычный, но он работал! (для меня)
5 ответов
Проблема заключалась в том, что EmployeeInformation был просто «шаблоном» для контроллера, чтобы выгрузить данные из запроса для представления.
EmployeeInformation на самом деле не было существующей таблицей, поэтому мне пришлось создать модель, то есть EmpleeInfoModels для хранения данных, которые затем были переданы в мое пользовательское представление.
И мой взгляд только что принес
21 Май 2014 в 22:02
Что я сделал для решения этой проблемы, с которой я столкнулся при добавлении представления с шаблоном, щелкнув правой кнопкой мыши действие контроллера, так это оставить поле «Класс контекста данных» пустым.
Я не совсем уверен, почему это работает, но я нашел этот метод из форумы ASP.NET.
5 Июл 2017 в 23:34
Убедитесь, что вы сначала перестроили свое решение. Если вы только что добавили новый класс, механизм формирования шаблонов может на самом деле не знать об этом, если проект еще не скомпилирован.
Если это не сработает, закройте Visual Studio и перезапустите. Я видел, как в VS2012 строительные леса просто шатались без уважительной причины, и перезапуск обычно исправляет это.
21 Май 2014 в 17:54
Добавим еще один совет: у вас может быть эта ошибка, если у вас есть какие-либо атрибуты configSource в любом из элементов вашего web.config. Я закомментировал все элементы, содержащие атрибут configSource, а затем снова запустил скаффолдинг, и это сработало как шарм. Как только он был закончен, я раскомментировал элементы в web.config, и все было готово.
7 Сен 2017 в 19:32
Проверьте параметр DataContextClass в окне “Добавить окно просмотра”, а затем исправьте ConnectionString при добавлении представления из контроллера.
Ссылка на снимок экрана .
4 Дек 2017 в 21:35
25 ответов
Проблема заключалась в повреждении web.config и каталога пакета.
Я создал новый проект и скопировал свои файлы кода в новый рабочий проект, позже я вернулся и запустил diff для файлов конфигурации и diff для папок в самом проекте.
Проблема заключалась в том, что обновления сильно засоряли мой файл конфигурации множеством артефактов обновлений, которые я в конечном итоге удалил.
Вторая проблема заключалась в том, что старый проект также продолжал зависать от старых DLL, которые предполагалось стереть с помощью приложения пакета Nuget. Итак, я вытер папки obj и bin, а затем папку пакета. После того, как это было сделано, я смог отремонтировать старый проект и построить его чисто.
Я не разбирался, почему файл конфигурации или папка с пакетом были так испорчены, но предполагаю, что это одна из двух вещей.
- Возможно, в пакете nuget есть недостаток
- Система управления версиями TFS заблокировала nuget от правильного обновления различных зависимостей.
С тех пор, прежде чем применять какие-либо обновления, я все проверяю. Однако, поскольку я не обновлял EF какое-то время, у меня нет доказательств того, что это решило мою проблему с EF или лесами.
Do Nhu Vy
10 Апр 2021 в 14:40
Мне удалось решить эту проблему и немного лучше понять, что происходит. Самое приятное то, что я могу воссоздать проблему и исправить ее, чтобы быть уверенным в моем объяснении здесь. Решением было установить одну и ту же версию Entity Framework как для проекта уровня доступа к данным, так и для веб-проекта.
На моем уровне доступа к данным был установлен Entity Framework v6.0.2 с использованием NuGet, в веб-проекте не было установлено Entity Framework. При попытке создать контроллер веб-API с шаблоном Entity Framework Entity Framework устанавливается автоматически, но его одна из более старых версий 6.0.0. Я был удивлен, увидев две версии Entity Framework, более новую в моем проекте уровня данных и более старую в моем веб-проекте. Как только я удалил старую версию и установил новую версию в Web Project, проблема исчезла.
8 Мар 2014 в 00:09
Я проверил все свои проекты, и у каждого была одна и та же версия Entity Framework. В моем случае проблема заключалась в том, что один из моих проектов был ориентирован на .Net 4.0, а остальные – на .Net 4.5.
22 Янв 2016 в 19:07
У меня точно такая же проблема. Впервые столкнулся с этим при прохождении курса Pluralsight «Родительско-дочерние данные с EF, MVC, Knockout, Ajax и валидацией».
Даже после обновления моего VS2013 до обновления 4 эта ошибка все еще сохранялась.
Смог обойти эту досадную проблему, изменив DbSet на IDbSet внутри класса DbContext. Первоначально ответ был получен здесь.
23 Май 2017 в 15:18
Моя проблема была похожа на многие здесь, общее сообщение об ошибке при попытке использовать скаффолдинг, чтобы попытаться добавить новый контроллер (ef6, webapi). Изначально я мог использовать строительные леса примерно для 15 контроллеров, но в один прекрасный день они просто перестали работать.
- Откройте рабочую папку на жестком диске для вашего решения.
- Удалите все внутри папки BIN
- Удалите все внутри папки OBJ
- Чистое решение, восстановление решения, добавление контроллера через строительные леса
Вуаля! (для меня)
13 Май 2015 в 17:46
Произошла ошибка при запуске выбранного генератора кода: ‘Не удалось обновить информацию о зависимостях для проекта. Пожалуйста, восстановите проект и попробуйте еще раз ».
- Перейдите в свой проект и обновите все пакеты NuGet до последней версии.
- Создавайте приложение до тех пор, пока не добьетесь успеха.
- Закройте раствор и снова откройте его.
- И попробуйте добавить файл, такой как контроллер, класс и т. Д.
23 Ноя 2020 в 19:58
У меня возникла эта проблема при попытке добавить контроллер Api в мое веб-приложение MVC ASP.NET по совершенно другой причине, чем в других приведенных ответах. Я случайно включил атрибут StringLength с объявлением IndexAttribute для целочисленного свойства из-за операции копирования и вставки:
Как только я избавился от объявления IndexAttribute , я смог добавить контроллер Api для модели, которая содержала оскорбительное свойство (NumTrainingPasses).
Чтобы помочь поисковым системам, вот полное сообщение об ошибке, которое я получил, прежде чем исправил проблему:
Не удалось получить метаданные для Owner.Models.MainRecord. Недвижимость «NumTrainingPasses» не является массивом строк или байтов. Длина может быть только настроен для свойств массива String или Byte.
15 Июл 2015 в 23:10
Обычно это связано с форматом вашего Web.config.
Перестройте решение и выполните поиск в разделе «Ошибки» на вкладке «Сообщения». Если у вас возникнут проблемы с форматированием файла web.config, вы увидите его там. Исправьте это и попробуйте еще раз.
Пример: у меня был connectionstring вместо connectionString
12 Дек 2016 в 23:09
Моя проблема была похожа на многие из них, общее сообщение об ошибке при попытке добавить новое представление или использовать скаффолдинг для добавления нового контроллера.
Я выяснил, что конструктор моделей MVC 5 и EF 6 – плохие друзья:
- Закомментируйте modelBuilder в своем классе Context.
- Чистое решение, восстановительное решение.
- Добавить представление и контроллер через строительные леса
- Раскомментируйте конструктор моделей.
27 Мар 2019 в 12:51
30 Май 2020 в 12:57
Если это кому-то поможет, я переименовал пространство имен, в котором находилась модель, затем перестроил проект, затем снова переименовал его и перестроил, и тогда все заработало.
3 Фев 2014 в 18:45
Что помогло мне решить эту проблему: Закройте решение и откройте проект, щелкнув файл проекта, а не файл решения, добавьте свой контроллер и качайте своего дядю
6 Мар 2014 в 13:52
Ничего из вышеперечисленного мне не помогло.
Я обнаружил, что причиной моей проблемы было переопределение OnModelCreating в моем классе контекста, от которого зависел элемент скаффолда. Комментируя этот метод, тогда строительные леса работают.
Я действительно хочу, чтобы Microsoft выпускала меньше ошибочного кода.
12 Авг 2014 в 04:56
Я видел эту ошибку в новом проекте MVC5 при ссылке на модель из другого проекта. Проверяем путь, EntityFramework.dll действительно существует. Однако он был доступен только для чтения. Монитор процесса показал, что произошла ошибка при попытке удалить файл. Установка EntityFramework.dll в папку с моими пакетами (копия, хранящаяся в системе управления версиями) как записываемая, обошла эту ошибку, но вызвала еще одну, в которой говорилось, что она не может загрузить сборку EntityFramework, потому что она не соответствует той, на которую ссылаются. Мой класс модели был определен в другом проекте, в котором использовалась более старая версия структуры сущностей. Проект MVC5 ссылался на EF 6, а модель – на EF 4.4. Обновление до EF 6 в проекте модели устранило это для меня.
21 Ноя 2013 в 13:15
(Я подозреваю, что есть по крайней мере 10 разных причин, которые могут вызвать это, о чем свидетельствуют различные ответы на SO, которые некоторые люди находят для себя полезными, но которые не работают для других, поэтому я не предлагаю свои решение подойдет всем).
Что сработало для нас (с использованием VS 2013 Express for Web на 64-битной Windows 7):
- Очистите свой раствор.
- Закройте Visual Studio. (не могу заставить его работать, если пропущу это).
- Откройте Visual Studio.
- Откройте ваше решение.
- Создайте свое решение.
- Теперь попробуйте добавить элементы строительных лесов; для нас это сработало, мы больше не получали сообщение об ошибке, в котором говорилось что-то вроде «Произошла ошибка при запуске выбранного генератора кода».
8 Мар 2015 в 21:00
Я часто сталкиваюсь с этой ошибкой при работе с MVC5 и EF, когда создаю модели и контекст в отдельном проекте (мой уровень доступа к данным) и забываю добавить строку подключения контекста в файл Web.Config проекта MVC.
6 Дек 2014 в 09:53
У меня также возникла эта проблема с обновлением 4 MSVS2013 и EF 6.0. Я получил следующее сообщение:
У меня есть модель примерно с 10 классами. Я без проблем создавал элементы в начале проекта.
После нескольких дней добавления функциональности я попытался вывести из модели другой класс, но из-за ошибки я не смог это сделать.
Я попытался обновить MSVS с обновления 2 до обновления 4, прокомментировать мой метод OnModelCreating и другие идеи, предложенные безуспешно.
В качестве временного способа продолжить работу над проектом я создал другой проект asp.net, вставил туда свои классы моделей (я использую свободный API, поэтому на них мало аннотаций) и успешно создал свой контроллер и представления.
После этого я вставил созданные классы обратно в исходный проект и исправил некоторые ошибки (в основном имена dbset).
Кажется, это работает, хотя я полагаю, что я все же найду ошибки, связанные с отношениями между классами (из-за отсутствия плавной конфигурации при создании).
25 Фев 2015 в 15:05
Это случилось со мной, когда я попытался создать новый каркас вне папки верхнего уровня для данного Area.
Я просто повторно выбрал свою область, и проблема исчезла:
Обратите внимание, что после создания каркаса вы попадете в место, где вы не сможете создать новый каркас без предварительного повторного выбора области (по крайней мере, в VS 2013).
20 Апр 2015 в 18:51
- vs2013 обновление 4
- ef 5.0.0
- разъем ibm db2connector 10,5 fp 5
Измените файл web.config как таковой: удалили provider / s из тега ef:
Добавлены теги строки подключения в разделах конфигурации:
28 Июн 2015 в 07:02
У меня была такая же проблема, когда в моем эталонном свойстве EF приложения MVC (в окне «Свойства») «Конкретная версия» была помечена как False, а в другом моем проекте (содержащем DBContext и модели), на который была сделана ссылка из приложения MVC, ссылочное свойство EF было помечено как Истинный. Когда я пометил его как False, все было в порядке.
15 Ноя 2015 в 14:02
В моем случае я пытался сформировать элементы Identity, и ничего из вышеперечисленного не помогло. Решением было просто открыть Visual Studio с правами администратора.
Восстановить решение у меня работает. перед перестройкой я обнаружил, что число ссылок моего ApplicationDbContext равно нулю, что невозможно, поэтому перестройте решение, теперь все в порядке.
10 Сен 2014 в 14:08
У меня возникла эта проблема во время прохождения курса Pluralsight «Родительско-дочерние данные с EF, MVC, Knockout, Ajax и Validation». Я пытался добавить новый шаблонный элемент , используя шаблон MVC 5 Controller с представлениями, используя Entity Framework .
Класс Data Context, который я использовал, включая переопределение метода OnModelCreating. Переопределение требовалось для добавления некоторых явных конфигураций столбцов базы данных, для которых значения по умолчанию EF не подходили. Это переопределение было простым, работало и без ошибок, но (как отмечалось выше) оно мешало генерации кода скаффолдинга контроллера.
1 – Я удалил (закомментировал) свое переопределение OnModelCreating, а шаблон подстановки завершился без сообщений об ошибках – мой код контроллера был сгенерирован, как ожидалось.
2 – Однако попытка построить проект не удалась, потому что «модель изменилась». Поскольку мой код контроллера теперь был сгенерирован правильно, я восстановил (без комментариев) переопределение OnModelCreating, и проект был построен и успешно запущен.
8 Июл 2015 в 17:08
А если вы разрабатываете приложение WinForms, попробуйте обратиться к App.config.
Moslem Ben Dhaou
25 Май 2014 в 15:17
1 ответ
Внесите изменения в файл web.config как Data Source=.MSSQLLocalDB;
13 Апр 2020 в 19:56