EF5 Запуск проекта: Ошибка Выполнение преобразования: перезапишите заменяющий токен '$ edmxInputFile $'
Я создаю консольный проект в VS2012 с .Net4.5.
После этого "Добавить", "Новый элемент" в проект и выберите "EF 5.x DbContext Generator".
Затем через пару секунд на вкладке "Список ошибок" появится следующее сообщение об ошибке:
Ошибка 1 Выполнение преобразования: замените токен замены $edmxInputFile $на фактическое имя файла .edmx, из которого вы хотите сгенерировать. C:\Projects\Тесты\ConsoleAppEF5\ConsoleAppEF5\Model1.tt`
Как я могу это исправить?
Что мне не хватает?
Ответы
Ответ 1
Сначала вы должны создать модель edmx, чтобы автоматически генерировать POCO. Вы можете добавить его через меню (Добавить новый элемент → ADO.NET Entity Data Model). После создания модели вы можете использовать генератор DbContext. Замените $edmxInputFile $именем вашего файла edmx, а затем сохраните файл, который вы редактируете (хотя VS 2012 должен делать это автоматически).
Ответ 2
И в другом сценарии это, по-видимому, известная ошибка: http://web.archive.org/web/20131203074519/http://connect.microsoft.com/VisualStudio/feedback/details/498723/ado-net-entityobject-generator-error-list-bug
Итак, если вы добавите генератор DbContext, а затем удалите его, и вы получите эту ошибку, просто закройте и снова запустите проект. Решил это для меня.
Ответ 3
В моем случае я решил, что хочу избавиться от EF 5.x DbContext Generator. Я получил эту ошибку, когда я выбрал ее, но затем удалил "Model1.Context.tt" и "Model1.tt", подумав об этом лучше. К сожалению для меня, я не понимал, что не все, что я должен был сделать. Когда я сделал еще одну "сборку", я получил ошибку OP.
Мои следующие шаги: я пошел в Model1.tt, очистил $edmxInputFile$
и оставил его как пустую строку и щелкнул, чтобы создать проект. Это дало мне ошибку UnauthorizedException (это нормально, я вообще не хотел, чтобы она что-то меняла). Я просто хотел, чтобы он избавился от исходной ошибки.
Далее я немного задумался, и я узнал, что мой проект ".csproj" был изменен следующим образом:
<ItemGroup>
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup>
Теперь я не думаю, что этот GUID будет одинаковым во всех случаях ошибки, или даже каждый раз, когда кто-либо добавляет в EF 5.x DbContext Generator. Но если ваш .csproj файл (ПРИМЕЧАНИЕ: это отличается от вашего файла .csproj.user), был изменен (надеюсь, что он находится в исходном коде, и вы можете это сказать), вы должны выяснить, как это сделать. Я удалил этот раздел, сделал "Build" и избавился от своих ошибок.
Если он не находится в исходном элементе управления, вы всегда можете создать фиктивный проект и сравнить файл .csproj с этим файлом проекта, а также выполнить пробную и пробную версию, извлекая что-то лишнее на ваш .csproj и сделав "Build" (сохранение вещей в Блокнот, откладывание их, если оно не очистит вашу ошибку). Я знаю, что это способ справиться с этим, но по крайней мере вы не тратите время на повторное выполнение всего вашего решения.
Ответ 4
В моем случае я непреднамеренно добавлял EF Db Context Generator вместо добавления фактического объекта. Всего PEBKAC
, но я отправляю его здесь, так как я уверен, что не буду единственным.
Я заметил, что расширение файла было TT, поскольку это текстовый шаблон, а не EDMX, который я хотел.
Если вы хотите добавить сущность, добавьте ADO.NET Entity Data Model
не EF X.x DbContext Generator