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

EF5 Запуск проекта: Ошибка Выполнение преобразования: перезапишите заменяющий токен '$ edmxInputFile $'

Я создаю консольный проект в VS2012 с .Net4.5. После этого "Добавить", "Новый элемент" в проект и выберите "EF 5.x DbContext Generator". Затем через пару секунд на вкладке "Список ошибок" появится следующее сообщение об ошибке:

Ошибка 1 Выполнение преобразования: замените токен замены $edmxInputFile $на фактическое имя файла .edmx, из которого вы хотите сгенерировать. C:\Projects\Тесты\ConsoleAppEF5\ConsoleAppEF5\Model1.tt`

Как я могу это исправить?

Что мне не хватает?

4b9b3361

Ответ 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