Инструмент для преобразования Entity Framework EDMX в Code First

Есть ли инструмент для преобразования edmx в первый код? Я знаю, что некоторое время назад говорили о том, что один из них появится в CTP, но я не могу найти никаких обновлений, касающихся этого.

На MSDN есть парень. forums, который написал свой собственный (пока недоступен), но ничего от команды EF.


person SturmUndDrang    schedule 07.09.2011    source источник
comment
Мне кажется, что для простых случаев вы могли бы сделать это с помощью собственного шаблона T4.   -  person Craig Stuntz    schedule 07.09.2011


Ответы (4)


Такого инструмента нет, потому что EDMX предлагает гораздо больше функций, которые нельзя перевести в первый код. Единственный доступный инструмент: EF Power Tools CTP1, которые позволяют создавать сопоставление с кодом из существующей базы данных, но будут создавать только образ вашей базы данных 1: 1 = именование на основе базы данных, без наследования, без разделения и т. д. Мощные инструменты также позволяют создавать EDMX только для чтения из существующего кода -первое отображение.

person Ladislav Mrnka    schedule 07.09.2011
comment
Средство от обратного проектирования до Code First похоже на то, что нам нужно. Мы обновляли EDMX из нашей базы данных, поэтому он должен работать хорошо. - person SturmUndDrang; 09.09.2011
comment
Такого инструмента нет, потому что EDMX предлагает гораздо больше функций, которые нельзя перевести в первый код, что для меня не имеет смысла. Вообще. Если вы можете создавать классы из базы данных, вы сможете создать аналогичную базу данных из тех же самых классов. Конечно, EF делает больше вещей, которые нельзя перевести обратно, но они, безусловно, могут понять суть базы данных. Сказать иначе просто звучит фанатично. Как будто все, что они делают, это лучшее, что можно сделать, и не сомневайтесь в этом. - person vbullinger; 16.01.2013
comment
@vbullinger: речь идет не о базе данных. Речь идет о преобразовании одного отображения со значительно большим набором функций в другое. Сейчас могут быть некоторые инструменты, которые смогут достичь этого для простых случаев, но есть множество продвинутых сценариев (особенно тех, где вы изменяете EDMX напрямую без дизайнера), которые не имеют никакой встречной части в коде и, следовательно, не могут быть преобразованы - несколько примеров: сопоставление хранимых процедур, сопоставление функций SQL, представления запросов, определение запросов и т. д. - person Ladislav Mrnka; 16.01.2013
comment
Если это невозможно сделать, @LadislavMrnka, значит, они делают это неправильно. Кажется абсурдным, что этого нельзя сделать. Абсолютно умопомрачительно тупой. Еще раз: если это НЕ МОЖЕТ быть сделано, значит, они сделали это неправильно. - person vbullinger; 16.01.2013
comment
@vbullinger: никто не говорит, что эти функции не станут доступны в коде в будущем. Это называется итеративной инкрементной разработкой. Ни одна компания никогда не поставляет программное обеспечение со всеми возможными функциями в первом выпуске. Если вы считаете, что это так уж неправильно, вы всегда можете принять участие в исправлении этого - EF является открытым исходным кодом. - person Ladislav Mrnka; 17.01.2013
comment
Хороший вопрос, Ладислав. И, поскольку есть инструменты, которые в любом случае делают часть этого (например, есть что-то, что сначала реконструирует код), я полагаю, что это не будет слишком далеко. Я просто чувствую, что они сделали это неправильно в том смысле, что код должен быть сгенерирован таким образом, чтобы вы могли использовать этот точный код в качестве кода в первую очередь. Нет смысла делать иначе. - person vbullinger; 17.01.2013
comment
Насколько я могу судить, MSFT отказалась от Model First и теперь все усилия направлены на Code First. Аннотации данных, идентификация ASP.NET — две самые большие недостающие функции Model First. - person Dave; 28.05.2014
comment
Этот ответ больше недействителен — инструменты EF теперь позволяют создавать модель Code First из БД — docs.microsoft.com/en-us/ef/ef6/modeling/code-first/workflows/ - person Dawood Awan; 17.09.2018

С помощью инструментов EF6 и Visual Studio 2013 или Visual Studio 2012 вы сначала получаете код параметра из базы данных (см. снимок экрана ниже).

введите здесь описание изображения

Если вы не видите этот параметр, вам необходимо установить инструменты Entity Framework 6 для Visual Studio 2012 и 2013 http://www.microsoft.com/en-gb/download/details.aspx?id=40762.

Это не сначала преобразует EDMX в код (как запрошено в вопросе), но он может сначала создать код из существующей БД (что, я полагаю, кто-то хотел сделать это из EDMX, будет иметь существующую БД, если они не удалили свою БД ).

person DermFrench    schedule 15.12.2014
comment
Это не отвечает на вопрос. - person Nick Coad; 21.08.2017

Времена меняются. Существует несколько генераторов, которые будут создавать сущности и сопоставления кода, используя EDMX в качестве источника. В библиотеке расширений их несколько. Скорее всего, вы захотите использовать генератор EF 5.x DBContextFluent для C#. http://visualstudiogallery.msdn.microsoft.com/5d663b99-ed3b-481d-b7bc-b947d2457e3c

Существует также генератор DbContect EF 5.x, который iirc помещает информацию о сопоставлении в модели.

После того, как вы установили любой из них, вы можете отредактировать EDMX и щелкнуть правой кнопкой мыши «Добавить элемент генерации кода». Это установит шаблоны .tt и сгенерирует класс Entity, класс DbContext и файлы сопоставления.

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

После того, как эти файлы будут на месте, вы можете удалить файлы .tt и файлы .edmx и в дальнейшем поддерживать свои сущности в коде.

person PilotBob    schedule 14.02.2013
comment
Я только что опробовал EF 5.x DbContext Generator для C#, он работает очень хорошо, за исключением того, что он не переносил мои сопоставления. И EF 5.x DBContextFluent выдает исключение. - person Walter Stabosz; 16.02.2013
comment
@PilotBob, не могли бы вы рассказать, как его использовать? - person Bilal Fazlani; 01.07.2013
comment
@WalterStabosz были исправлены некоторые ошибки. Ему не нравится дискриминатор Null/Not Null на TPH, я работал над этим. Кроме того, если вы видите QA и не всегда отображаете FK, мне пришлось добавить вручную. - person PilotBob; 10.09.2013

По состоянию на 30 января 2013 г. EF Power Tools (бета-версия 3) — это последняя версия EF Power Tools, которая работает с EF4.2-EF6.

person dav_i    schedule 15.05.2013
comment
За исключением того, что электроинструменты не делают того, что просят. Если не добавили новую функцию. - person PilotBob; 07.11.2013
comment
@PilotBob Из этой ссылки: What does it add to Visual Studio?>When right-clicking on a C# project>Reverse Engineer Code First - person dav_i; 07.11.2013
comment
Он реконструирует БАЗУ ДАННЫХ, а не вашу существующую модель данных и сопоставления EDMX. - person PilotBob; 14.02.2014
comment
@PilotBob Хотя я согласен с вами в том, что он не реконструирует EDMX, немного несправедливо, что ответ DermFrench выше, опубликованный более года спустя относительно EF6 Tools & Visual Studio, имеет 16 up- голосов на момент написания, но инструмент также не реконструирует EDMX. - person MickyD; 16.12.2015
comment
Экранная печать йо! Но разве твоя мама никогда не говорила тебе, что жизнь несправедлива? ;) - person PilotBob; 16.12.2015